AsyncTCP + Guru Meditation Error: Core 1 panic’ed (LoadProhibited). Exception was unhandled

Hello,

I’m trying to use this example (ESP32 Web Server using Server-Sent Events (Update Sensor Readings Automatically)) with arduino 2.0. but when connect >1 client my device report this error:

Guru Meditation Error: Core 1 panic’ed (LoadProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0x400d34fa PS : 0x00060230 A0 : 0x800d3592 A1 : 0x3ffb1ef0
A2 : 0x3ffcb974 A3 : 0xe008b083 A4 : 0x00000029 A5 : 0x3ffd1784
A6 : 0x0000000a A7 : 0x0d0a0d30 A8 : 0x800d3508 A9 : 0x3ffb1ed0
A10 : 0x00000029 A11 : 0x00000029 A12 : 0x00000029 A13 : 0x00000029
A14 : 0x00000000 A15 : 0x00000000 SAR : 0x0000000a EXCCAUSE: 0x0000001c
EXCVADDR: 0xe008b083 LBEG : 0x4000c2e0 LEND : 0x4000c2f6 LCOUNT : 0xffffffff

ELF file SHA256: 0000000000000000

Backtrace: 0x400d34fa:0x3ffb1ef0 0x400d358f:0x3ffb1f10 0x400d35ab:0x3ffb1f30 0x400d3601:0x3ffb1f50 0x400d0d5d:0x3ffb1f80 0x400da2d9:0
x3ffb1fb0 0x40089792:0x3ffb1fd0

Rebooting…

I'm using ESP32-WROOM-32E and Arduino 2.0.

Does anyone have similar problem?

Best Regards,
Kriss

I doubt it.

What did you get when you placed the debug info into the ESP Exception Decoder, look it up?

Did you happen to post your well formatted code in code tags?

Did the same issue happen with the desktop version of the IDE?

Did you happen to post a schematic?

How about the image of the project?

Can you help us help you?

Hi,

#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>

// Replace with your network credentials
const char* ssid = "****";
const char* password = "****";


// Create AsyncWebServer object on port 80
AsyncWebServer server(80);

// Create an Event Source on /events
AsyncEventSource events("/events");

// Timer variables
unsigned long lastTime = 0;  
unsigned long timerDelay = 500;

float temperature = 1.0;
float humidity = 2.0;
float pressure = 3.0;

// Initialize WiFi
void initWiFi() {

    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, password);
    Serial.print("Connecting to WiFi ..");
    while (WiFi.status() != WL_CONNECTED) {
        Serial.print('.');
        delay(1000);
    }
    Serial.println(WiFi.localIP());
}

String processor(const String& var){
  //getSensorReadings();
  //Serial.println(var);
  if(var == "TEMPERATURE"){
    return String(temperature);
  }
  else if(var == "HUMIDITY"){
    return String(humidity);
  }
  else if(var == "PRESSURE"){
    return String(pressure);
  }  
  return String();
}

const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML><html>
<head>
  <title>ESP Web Server</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
  <link rel="icon" href="data:,">
  <style>
    html {font-family: Arial; display: inline-block; text-align: center;}
    p { font-size: 1.2rem;}
    body {  margin: 0;}
    .topnav { overflow: hidden; background-color: #50B8B4; color: white; font-size: 1rem; }
    .content { padding: 20px; }
    .card { background-color: white; box-shadow: 2px 2px 12px 1px rgba(140,140,140,.5); }
    .cards { max-width: 800px; margin: 0 auto; display: grid; grid-gap: 2rem; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
    .reading { font-size: 1.4rem; }
  </style>
</head>
<body>
  <div class="topnav">
    <h1>BME280 WEB SERVER (SSE)</h1>
  </div>
  <div class="content">
    <div class="cards">
      <div class="card">
        <p><i class="fas fa-thermometer-half" style="color:#059e8a;"></i> TEMPERATURE</p><p><span class="reading"><span id="temp">%TEMPERATURE%</span> &deg;C</span></p>
      </div>
      <div class="card">
        <p><i class="fas fa-tint" style="color:#00add6;"></i> HUMIDITY</p><p><span class="reading"><span id="hum">%HUMIDITY%</span> &percnt;</span></p>
      </div>
      <div class="card">
        <p><i class="fas fa-angle-double-down" style="color:#e1e437;"></i> PRESSURE</p><p><span class="reading"><span id="pres">%PRESSURE%</span> hPa</span></p>
      </div>     
    </div>
  </div>
<script>
if (!!window.EventSource) {
 var source = new EventSource('/events');
 
 source.addEventListener('open', function(e) {
  console.log("Events Connected");
 }, false);
 source.addEventListener('error', function(e) {
  if (e.target.readyState != EventSource.OPEN) {
    console.log("Events Disconnected");
  }
 }, false);
 
 source.addEventListener('message', function(e) {
  console.log("message", e.data);
 }, false);
 
 source.addEventListener('temperature', function(e) {
  console.log("temperature", e.data);
  document.getElementById("temp").innerHTML = e.data;
 }, false);
 
 source.addEventListener('humidity', function(e) {
  console.log("humidity", e.data);
  document.getElementById("hum").innerHTML = e.data;
 }, false);
 
 source.addEventListener('pressure', function(e) {
  console.log("pressure", e.data);
  document.getElementById("pres").innerHTML = e.data;
 }, false);
}
</script>
</body>
</html>)rawliteral";

void setup() {
  Serial.begin(115200);
  initWiFi();
  //initBME();

  // Handle Web Server
  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", index_html, processor);
  });

  // Handle Web Server Events
  events.onConnect([](AsyncEventSourceClient *client){
    if(client->lastId()){
      Serial.printf("Client reconnected! Last message ID that it got is: %u\n", client->lastId());
    }
    // send event with message "hello!", id current millis
    // and set reconnect delay to 1 second
    client->send("hello!", NULL, millis(), 10000);
  });
  server.addHandler(&events);
  server.begin();
}

void loop() {
  if ((millis() - lastTime) > timerDelay) {

    // Serial.printf("\r\n\nTemperature = %.2f oC\n", temperature);
    // Serial.printf("\r\nHumidity = %.2f \n", humidity);
    // Serial.printf("\r\nPressure = %.2f hPa\n", pressure);

    // Send Events to the Web Client with the Sensor Readings
    events.send("ping",NULL,millis());
    events.send(String(temperature).c_str(),"temperature",millis());
    events.send(String(humidity).c_str(),"humidity",millis());
    events.send(String(pressure).c_str(),"pressure",millis());
    
    temperature+=0.1;
    humidity+=0.2;
    pressure+=0.3;

    lastTime = millis();
  }
}

This is the board:

I have the same problem with old IDE 1.8.18.

Best Regards,

Same problem with different boards.

????????????????????????????????????????????????????????????????????????

PC: 0x400d3470: AsyncEventSourceClient::_runQueue() at C:\Users\KRASI\Documents\Arduino\libraries\ESP_Async_WebServer\src\AsyncEventSource.cpp line 244
EXCVADDR: 0x0d2d4448

Decoding stack results
0x400d3470: AsyncEventSourceClient::_runQueue() at C:\Users\KRASI\Documents\Arduino\libraries\ESP_Async_WebServer\src\AsyncEventSource.cpp line 244
0x400d3503: AsyncEventSourceClient::_queueMessage(AsyncEventSourceMessage*) at C:\Users\KRASI\Documents\Arduino\libraries\ESP_Async_WebServer\src\AsyncEventSource.cpp line 194
0x400d351f: AsyncEventSourceClient::write(char const*, unsigned int) at C:\Users\KRASI\Documents\Arduino\libraries\ESP_Async_WebServer\src\AsyncEventSource.cpp line 229
0x400d3575: AsyncEventSource::send(char const*, char const*, unsigned int, unsigned int) at C:\Users\KRASI\Documents\Arduino\libraries\ESP_Async_WebServer\src\AsyncEventSource.cpp line 320
0x400d0c81: loop() at C:\Users\KRASI\Documents\Arduino\web_SrvSendEvent/web_SrvSendEvent.ino line 171
0x400da24d: loopTask(void*) at C:\Users\KRASI\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\cores\esp32\main.cpp line 23
0x40089792: vPortTaskWrapper at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/port.c line 143

It is not liking those.

Have you tried

#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>

// Replace with your network credentials
const char* ssid = "****";
const char* password = "****";


// Create AsyncWebServer object on port 80
AsyncWebServer server(80);

// Create an Event Source on /events
AsyncEventSource events("/events");

// Timer variables
unsigned long lastTime = 0;  
unsigned long timerDelay = 500;

float temperature = 1.0;
float humidity = 2.0;
float pressure = 3.0;

// Initialize WiFi
void initWiFi() {

    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, password);
    Serial.print("Connecting to WiFi ..");
    while (WiFi.status() != WL_CONNECTED) {
        Serial.print('.');
        delay(1000);
    }
    Serial.println(WiFi.localIP());
}

String processor(const String& var){
  //getSensorReadings();
  //Serial.println(var);
  if(var == "TEMPERATURE"){
    return String(temperature);
  }
  else if(var == "HUMIDITY"){
    return String(humidity);
  }
  else if(var == "PRESSURE"){
    return String(pressure);
  }  
  return String();
}

const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML><html>
<head>
  <title>ESP Web Server</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
  <link rel="icon" href="data:,">
  <style>
    html {font-family: Arial; display: inline-block; text-align: center;}
    p { font-size: 1.2rem;}
    body {  margin: 0;}
    .topnav { overflow: hidden; background-color: #50B8B4; color: white; font-size: 1rem; }
    .content { padding: 20px; }
    .card { background-color: white; box-shadow: 2px 2px 12px 1px rgba(140,140,140,.5); }
    .cards { max-width: 800px; margin: 0 auto; display: grid; grid-gap: 2rem; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
    .reading { font-size: 1.4rem; }
  </style>
</head>
<body>
  <div class="topnav">
    <h1>BME280 WEB SERVER (SSE)</h1>
  </div>
  <div class="content">
    <div class="cards">
      <div class="card">
        <p><i class="fas fa-thermometer-half" style="color:#059e8a;"></i> TEMPERATURE</p><p><span class="reading"><span id="temp">%TEMPERATURE%</span> &deg;C</span></p>
      </div>
      <div class="card">
        <p><i class="fas fa-tint" style="color:#00add6;"></i> HUMIDITY</p><p><span class="reading"><span id="hum">%HUMIDITY%</span> &percnt;</span></p>
      </div>
      <div class="card">
        <p><i class="fas fa-angle-double-down" style="color:#e1e437;"></i> PRESSURE</p><p><span class="reading"><span id="pres">%PRESSURE%</span> hPa</span></p>
      </div>     
    </div>
  </div>
<script>
if (!!window.EventSource) {
 var source = new EventSource('/events');
 
 source.addEventListener('open', function(e) {
  console.log("Events Connected");
 }, false);
 source.addEventListener('error', function(e) {
  if (e.target.readyState != EventSource.OPEN) {
    console.log("Events Disconnected");
  }
 }, false);
 
 source.addEventListener('message', function(e) {
  console.log("message", e.data);
 }, false);
 
 source.addEventListener('temperature', function(e) {
  console.log("temperature", e.data);
  document.getElementById("temp").innerHTML = e.data;
 }, false);
 
 source.addEventListener('humidity', function(e) {
  console.log("humidity", e.data);
  document.getElementById("hum").innerHTML = e.data;
 }, false);
 
 source.addEventListener('pressure', function(e) {
  console.log("pressure", e.data);
  document.getElementById("pres").innerHTML = e.data;
 }, false);
}
</script>
</body>
</html>)rawliteral";

void setup() {
  Serial.begin(115200);
  initWiFi();
  //initBME();

  // Handle Web Server
  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", index_html, processor);
  });

  // Handle Web Server Events
  events.onConnect([](AsyncEventSourceClient *client){
    if(client->lastId()){
      Serial.printf("Client reconnected! Last message ID that it got is: %u\n", client->lastId());
    }
    // send event with message "hello!", id current millis
    // and set reconnect delay to 1 second
    client->send("hello!", NULL, millis(), 10000);
  });
  server.addHandler(&events);
  server.begin();
}

void loop() {
  if ((millis() - lastTime) > timerDelay) {

    // Serial.printf("\r\n\nTemperature = %.2f oC\n", temperature);
    // Serial.printf("\r\nHumidity = %.2f \n", humidity);
    // Serial.printf("\r\nPressure = %.2f hPa\n", pressure);

    // Send Events to the Web Client with the Sensor Readings
    events.send("ping",NULL,millis());
    //events.send(String(temperature).c_str(),"temperature",millis());
    //events.send(String(humidity).c_str(),"humidity",millis());
    //events.send(String(pressure).c_str(),"pressure",millis());
    
    temperature+=0.1;
    humidity+=0.2;
    pressure+=0.3;

    lastTime = millis();
  }
}

?

did it work?

For 10 min. testing it works, but there is no event to client which is the main purpose of this example.

Now add one more thing to the mix like this

#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>

// Replace with your network credentials
const char* ssid = "****";
const char* password = "****";


// Create AsyncWebServer object on port 80
AsyncWebServer server(80);

// Create an Event Source on /events
AsyncEventSource events("/events");

// Timer variables
unsigned long lastTime = 0;  
unsigned long timerDelay = 500;

float temperature = 1.0;
float humidity = 2.0;
float pressure = 3.0;

// Initialize WiFi
void initWiFi() {

    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, password);
    Serial.print("Connecting to WiFi ..");
    while (WiFi.status() != WL_CONNECTED) {
        Serial.print('.');
        delay(1000);
    }
    Serial.println(WiFi.localIP());
}

String processor(const String& var){
  //getSensorReadings();
  //Serial.println(var);
  if(var == "TEMPERATURE"){
    return String(temperature);
  }
  else if(var == "HUMIDITY"){
    return String(humidity);
  }
  else if(var == "PRESSURE"){
    return String(pressure);
  }  
  return String();
}

const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML><html>
<head>
  <title>ESP Web Server</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
  <link rel="icon" href="data:,">
  <style>
    html {font-family: Arial; display: inline-block; text-align: center;}
    p { font-size: 1.2rem;}
    body {  margin: 0;}
    .topnav { overflow: hidden; background-color: #50B8B4; color: white; font-size: 1rem; }
    .content { padding: 20px; }
    .card { background-color: white; box-shadow: 2px 2px 12px 1px rgba(140,140,140,.5); }
    .cards { max-width: 800px; margin: 0 auto; display: grid; grid-gap: 2rem; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
    .reading { font-size: 1.4rem; }
  </style>
</head>
<body>
  <div class="topnav">
    <h1>BME280 WEB SERVER (SSE)</h1>
  </div>
  <div class="content">
    <div class="cards">
      <div class="card">
        <p><i class="fas fa-thermometer-half" style="color:#059e8a;"></i> TEMPERATURE</p><p><span class="reading"><span id="temp">%TEMPERATURE%</span> &deg;C</span></p>
      </div>
      <div class="card">
        <p><i class="fas fa-tint" style="color:#00add6;"></i> HUMIDITY</p><p><span class="reading"><span id="hum">%HUMIDITY%</span> &percnt;</span></p>
      </div>
      <div class="card">
        <p><i class="fas fa-angle-double-down" style="color:#e1e437;"></i> PRESSURE</p><p><span class="reading"><span id="pres">%PRESSURE%</span> hPa</span></p>
      </div>     
    </div>
  </div>
<script>
if (!!window.EventSource) {
 var source = new EventSource('/events');
 
 source.addEventListener('open', function(e) {
  console.log("Events Connected");
 }, false);
 source.addEventListener('error', function(e) {
  if (e.target.readyState != EventSource.OPEN) {
    console.log("Events Disconnected");
  }
 }, false);
 
 source.addEventListener('message', function(e) {
  console.log("message", e.data);
 }, false);
 
 source.addEventListener('temperature', function(e) {
  console.log("temperature", e.data);
  document.getElementById("temp").innerHTML = e.data;
 }, false);
 
 source.addEventListener('humidity', function(e) {
  console.log("humidity", e.data);
  document.getElementById("hum").innerHTML = e.data;
 }, false);
 
 source.addEventListener('pressure', function(e) {
  console.log("pressure", e.data);
  document.getElementById("pres").innerHTML = e.data;
 }, false);
}
</script>
</body>
</html>)rawliteral";

void setup() {
  Serial.begin(115200);
  initWiFi();
  //initBME();

  // Handle Web Server
  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", index_html, processor);
  });

  // Handle Web Server Events
  events.onConnect([](AsyncEventSourceClient *client){
    if(client->lastId()){
      Serial.printf("Client reconnected! Last message ID that it got is: %u\n", client->lastId());
    }
    // send event with message "hello!", id current millis
    // and set reconnect delay to 1 second
    client->send("hello!", NULL, millis(), 10000);
  });
  server.addHandler(&events);
  server.begin();
}

void loop() {
  if ((millis() - lastTime) > timerDelay) {

    // Serial.printf("\r\n\nTemperature = %.2f oC\n", temperature);
    // Serial.printf("\r\nHumidity = %.2f \n", humidity);
    // Serial.printf("\r\nPressure = %.2f hPa\n", pressure);

    // Send Events to the Web Client with the Sensor Readings
    events.send("ping",NULL,millis());
    events.send(String(temperature).c_str(),"temperature",millis());
    //events.send(String(humidity).c_str(),"humidity",millis());
    //events.send(String(pressure).c_str(),"pressure",millis());
    
    temperature+=0.1;
    humidity+=0.2;
    pressure+=0.3;

    lastTime = millis();
  }
}

does that work?

It seems to be a working...

does this work

#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>

// Replace with your network credentials
const char* ssid = "****";
const char* password = "****";


// Create AsyncWebServer object on port 80
AsyncWebServer server(80);

// Create an Event Source on /events
AsyncEventSource events("/events");

// Timer variables
unsigned long lastTime = 0;  
unsigned long timerDelay = 500;

float temperature = 1.0;
float humidity = 2.0;
float pressure = 3.0;

// Initialize WiFi
void initWiFi() {

    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, password);
    Serial.print("Connecting to WiFi ..");
    while (WiFi.status() != WL_CONNECTED) {
        Serial.print('.');
        delay(1000);
    }
    Serial.println(WiFi.localIP());
}

String processor(const String& var){
  //getSensorReadings();
  //Serial.println(var);
  if(var == "TEMPERATURE"){
    return String(temperature);
  }
  else if(var == "HUMIDITY"){
    return String(humidity);
  }
  else if(var == "PRESSURE"){
    return String(pressure);
  }  
  return String();
}

const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML><html>
<head>
  <title>ESP Web Server</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
  <link rel="icon" href="data:,">
  <style>
    html {font-family: Arial; display: inline-block; text-align: center;}
    p { font-size: 1.2rem;}
    body {  margin: 0;}
    .topnav { overflow: hidden; background-color: #50B8B4; color: white; font-size: 1rem; }
    .content { padding: 20px; }
    .card { background-color: white; box-shadow: 2px 2px 12px 1px rgba(140,140,140,.5); }
    .cards { max-width: 800px; margin: 0 auto; display: grid; grid-gap: 2rem; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
    .reading { font-size: 1.4rem; }
  </style>
</head>
<body>
  <div class="topnav">
    <h1>BME280 WEB SERVER (SSE)</h1>
  </div>
  <div class="content">
    <div class="cards">
      <div class="card">
        <p><i class="fas fa-thermometer-half" style="color:#059e8a;"></i> TEMPERATURE</p><p><span class="reading"><span id="temp">%TEMPERATURE%</span> &deg;C</span></p>
      </div>
      <div class="card">
        <p><i class="fas fa-tint" style="color:#00add6;"></i> HUMIDITY</p><p><span class="reading"><span id="hum">%HUMIDITY%</span> &percnt;</span></p>
      </div>
      <div class="card">
        <p><i class="fas fa-angle-double-down" style="color:#e1e437;"></i> PRESSURE</p><p><span class="reading"><span id="pres">%PRESSURE%</span> hPa</span></p>
      </div>     
    </div>
  </div>
<script>
if (!!window.EventSource) {
 var source = new EventSource('/events');
 
 source.addEventListener('open', function(e) {
  console.log("Events Connected");
 }, false);
 source.addEventListener('error', function(e) {
  if (e.target.readyState != EventSource.OPEN) {
    console.log("Events Disconnected");
  }
 }, false);
 
 source.addEventListener('message', function(e) {
  console.log("message", e.data);
 }, false);
 
 source.addEventListener('temperature', function(e) {
  console.log("temperature", e.data);
  document.getElementById("temp").innerHTML = e.data;
 }, false);
 
 source.addEventListener('humidity', function(e) {
  console.log("humidity", e.data);
  document.getElementById("hum").innerHTML = e.data;
 }, false);
 
 source.addEventListener('pressure', function(e) {
  console.log("pressure", e.data);
  document.getElementById("pres").innerHTML = e.data;
 }, false);
}
</script>
</body>
</html>)rawliteral";

void setup() {
  Serial.begin(115200);
  initWiFi();
  //initBME();

  // Handle Web Server
  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", index_html, processor);
  });

  // Handle Web Server Events
  events.onConnect([](AsyncEventSourceClient *client){
    if(client->lastId()){
      Serial.printf("Client reconnected! Last message ID that it got is: %u\n", client->lastId());
    }
    // send event with message "hello!", id current millis
    // and set reconnect delay to 1 second
    client->send("hello!", NULL, millis(), 10000);
  });
  server.addHandler(&events);
  server.begin();
}

void loop() {
  if ((millis() - lastTime) > timerDelay) {

    // Serial.printf("\r\n\nTemperature = %.2f oC\n", temperature);
    // Serial.printf("\r\nHumidity = %.2f \n", humidity);
    // Serial.printf("\r\nPressure = %.2f hPa\n", pressure);

    // Send Events to the Web Client with the Sensor Readings
    events.send("ping",NULL,millis());
    events.send(String(temperature).c_str(),"temperature",millis());
    events.send(String(humidity).c_str(),"humidity",millis());
    //events.send(String(pressure).c_str(),"pressure",millis());
    
    temperature+=0.1;
    humidity+=0.2;
    pressure+=0.3;

    lastTime = millis();
  }
}

No, It fall to exception!

Now you know where the issue is, now to fix it.

what does this print?

#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>

// Replace with your network credentials
const char* ssid = "****";
const char* password = "****";


// Create AsyncWebServer object on port 80
AsyncWebServer server(80);

// Create an Event Source on /events
AsyncEventSource events("/events");

// Timer variables
unsigned long lastTime = 0;  
unsigned long timerDelay = 500;

float temperature = 1.0;
float humidity = 2.0;
float pressure = 3.0;

// Initialize WiFi
void initWiFi() {

    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, password);
    Serial.print("Connecting to WiFi ..");
    while (WiFi.status() != WL_CONNECTED) {
        Serial.print('.');
        delay(1000);
    }
    Serial.println(WiFi.localIP());
}

String processor(const String& var){
  //getSensorReadings();
  //Serial.println(var);
  if(var == "TEMPERATURE"){
    return String(temperature);
  }
  else if(var == "HUMIDITY"){
    return String(humidity);
  }
  else if(var == "PRESSURE"){
    return String(pressure);
  }  
  return String();
}

const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML><html>
<head>
  <title>ESP Web Server</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
  <link rel="icon" href="data:,">
  <style>
    html {font-family: Arial; display: inline-block; text-align: center;}
    p { font-size: 1.2rem;}
    body {  margin: 0;}
    .topnav { overflow: hidden; background-color: #50B8B4; color: white; font-size: 1rem; }
    .content { padding: 20px; }
    .card { background-color: white; box-shadow: 2px 2px 12px 1px rgba(140,140,140,.5); }
    .cards { max-width: 800px; margin: 0 auto; display: grid; grid-gap: 2rem; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
    .reading { font-size: 1.4rem; }
  </style>
</head>
<body>
  <div class="topnav">
    <h1>BME280 WEB SERVER (SSE)</h1>
  </div>
  <div class="content">
    <div class="cards">
      <div class="card">
        <p><i class="fas fa-thermometer-half" style="color:#059e8a;"></i> TEMPERATURE</p><p><span class="reading"><span id="temp">%TEMPERATURE%</span> &deg;C</span></p>
      </div>
      <div class="card">
        <p><i class="fas fa-tint" style="color:#00add6;"></i> HUMIDITY</p><p><span class="reading"><span id="hum">%HUMIDITY%</span> &percnt;</span></p>
      </div>
      <div class="card">
        <p><i class="fas fa-angle-double-down" style="color:#e1e437;"></i> PRESSURE</p><p><span class="reading"><span id="pres">%PRESSURE%</span> hPa</span></p>
      </div>     
    </div>
  </div>
<script>
if (!!window.EventSource) {
 var source = new EventSource('/events');
 
 source.addEventListener('open', function(e) {
  console.log("Events Connected");
 }, false);
 source.addEventListener('error', function(e) {
  if (e.target.readyState != EventSource.OPEN) {
    console.log("Events Disconnected");
  }
 }, false);
 
 source.addEventListener('message', function(e) {
  console.log("message", e.data);
 }, false);
 
 source.addEventListener('temperature', function(e) {
  console.log("temperature", e.data);
  document.getElementById("temp").innerHTML = e.data;
 }, false);
 
 source.addEventListener('humidity', function(e) {
  console.log("humidity", e.data);
  document.getElementById("hum").innerHTML = e.data;
 }, false);
 
 source.addEventListener('pressure', function(e) {
  console.log("pressure", e.data);
  document.getElementById("pres").innerHTML = e.data;
 }, false);
}
</script>
</body>
</html>)rawliteral";

void setup() {
  Serial.begin(115200);
  initWiFi();
  //initBME();

  // Handle Web Server
  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", index_html, processor);
  });

  // Handle Web Server Events
  events.onConnect([](AsyncEventSourceClient *client){
    if(client->lastId()){
      Serial.printf("Client reconnected! Last message ID that it got is: %u\n", client->lastId());
    }
    // send event with message "hello!", id current millis
    // and set reconnect delay to 1 second
    client->send("hello!", NULL, millis(), 10000);
  });
  server.addHandler(&events);
  server.begin();
}

void loop() {
  if ((millis() - lastTime) > timerDelay) {

    // Serial.printf("\r\n\nTemperature = %.2f oC\n", temperature);
    // Serial.printf("\r\nHumidity = %.2f \n", humidity);
    // Serial.printf("\r\nPressure = %.2f hPa\n", pressure);

    // Send Events to the Web Client with the Sensor Readings
    events.send("ping",NULL,millis());
    events.send(String(temperature).c_str(),"temperature",millis());
   Serial.print( "String(humidity).c_str() ");
Serial.print( String(humidity).c_str() );
  Serial.println();
events.send(String(humidity).c_str(),"humidity",millis());
    //events.send(String(pressure).c_str(),"pressure",millis());
    
    temperature+=0.1;
    humidity+=0.2;
    pressure+=0.3;

    lastTime = millis();
  }
}

Print output:

String(humidity).c_str() 306.20
String(humidity).c_str() 306.40
String(humidity).c_str() 306.60
String(humidity).c_str() 306.80
String(humidity).c_str() 307.00
String(humidity).c_str() 307.20
String(humidity).c_str() 307.40
String(humidity).c_str() 307.60
String(humidity).c_str() 307.80
String(humidity).c_str() 308.00
String(humidity).c_str() 308.20
String(humidity).c_str() 308.40
String(humidity).c_str() 308.60
String(humidity).c_str() 308.80
String(humidity).c_str() 309.00
String(humidity).c_str() 309.20
String(humidity).c_str() 309.40
String(humidity).c_str() 309.60
String(humidity).c_str() 309.80
String(humidity).c_str() 310.00
String(humidity).c_str() 310.20
String(humidity).c_str() 310.40
String(humidity).c_str() 310.60
String(humidity).c_str() 310.80
String(humidity).c_str() 311.00
String(humidity).c_str() 311.20
String(humidity).c_str() 311.40
String(humidity).c_str() 311.60
String(humidity).c_str() 311.80
String(humidity).c_str() 312.00
String(humidity).c_str() 312.20
String(humidity).c_str() 312.40
String(humidity).c_str() 312.60
String(humidity).c_str() 312.80
String(humidity).c_str() 313.00
String(humidity).c_str() 313.20
String(humidity).c_str() 313.40
String(humidity).c_str() 313.60
String(humidity).c_str() 313.80
String(humidity).c_str() 314.00
String(humidity).c_str() 314.20
String(humidity).c_str() 314.40
String(humidity).c_str() 314.60
String(humidity).c_str() 314.80
String(humidity).c_str() 315.00
String(humidity).c_str() 315.20
String(humidity).c_str() 315.40
String(humidity).c_str() 315.60
String(humidity).c_str() 315.80
String(humidity).c_str() 316.00
String(humidity).c_str() 316.20
String(humidity).c_str() 316.40
String(humidity).c_str() 316.60
String(humidity).c_str() 316.80
String(humidity).c_str() 317.00
String(humidity).c_str() 317.20
String(humidity).c_str() 317.40
String(humidity).c_str() 317.60
String(humidity).c_str() 317.80
String(humidity).c_str() 318.00
String(humidity).c_str() 318.20
String(humidity).c_str() 318.40
String(humidity).c_str() 318.60
String(humidity).c_str() 318.80
String(humidity).c_str() 319.00
String(humidity).c_str() 319.20
String(humidity).c_str() 319.40
String(humidity).c_str() 319.60
String(humidity).c_str() 319.80
String(humidity).c_str() 320.00
String(humidity).c_str() 320.20
String(humidity).c_str() 320.40
String(humidity).c_str() 320.60
String(humidity).c_str() 320.80
String(humidity).c_str() 321.00
String(humidity).c_str() 321.20
String(humidity).c_str() 321.40
String(humidity).c_str() 321.60
String(humidity).c_str() 321.80
String(humidity).c_str() 322.00
String(humidity).c_str() 322.20
String(humidity).c_str() 322.40
String(humidity).c_str() 322.60
String(humidity).c_str() 322.80
String(humidity).c_str() 323.00
String(humidity).c_str() 323.20
String(humidity).c_str() 323.40
String(humidity).c_str() 323.60
String(humidity).c_str() 323.80
String(humidity).c_str() 324.00
String(humidity).c_str() 324.20
String(humidity).c_str() 324.40
String(humidity).c_str() 324.60
String(humidity).c_str() 324.80
String(humidity).c_str() 325.00
String(humidity).c_str() 325.20
String(humidity).c_str() 325.40
String(humidity).c_str() 325.60
String(humidity).c_str() 325.80
String(humidity).c_str() 326.00
String(humidity).c_str() 326.20
String(humidity).c_str() 326.40
String(humidity).c_str() 326.60
String(humidity).c_str() 326.80
String(humidity).c_str() 327.00
String(humidity).c_str() 327.20
String(humidity).c_str() 327.40
String(humidity).c_str() 327.60
String(humidity).c_str() 327.80
String(humidity).c_str() 328.00
String(humidity).c_str() 328.20
String(humidity).c_str() 328.40
String(humidity).c_str() 328.60
String(humidity).c_str() 328.80
String(humidity).c_str() 329.00
String(humidity).c_str() 329.20
String(humidity).c_str() 329.40
String(humidity).c_str() 329.60
String(humidity).c_str() 329.80
String(humidity).c_str() 330.00
String(humidity).c_str() 330.20
String(humidity).c_str() 330.40
String(humidity).c_str() 330.60
String(humidity).c_str() 330.80
String(humidity).c_str() 331.00
String(humidity).c_str() 331.20
String(humidity).c_str() 331.40
String(humidity).c_str() 331.60
String(humidity).c_str() 331.80
String(humidity).c_str() 332.00
String(humidity).c_str() 332.20
String(humidity).c_str() 332.40
String(humidity).c_str() 332.60
Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.
Core 1 register dump:
PC      : 0x400d3472  PS      : 0x00060230  A0      : 0x800d350a  A1      : 0x3ffb1ef0  
A2      : 0x3ffd0a70  A3      : 0x00000020  A4      : 0x0000002d  A5      : 0x3ffd1448  
A6      : 0x0000000a  A7      : 0x362e3233  A8      : 0x800d3480  A9      : 0x3ffb1ed0  
A10     : 0x0000002d  A11     : 0x0000002d  A12     : 0x0000002d  A13     : 0x0000002d  
A14     : 0x00000000  A15     : 0x00000000  SAR     : 0x0000000a  EXCCAUSE: 0x0000001c  
EXCVADDR: 0x00000020  LBEG    : 0x4000c2e0  LEND    : 0x4000c2f6  LCOUNT  : 0xffffffff  

ELF file SHA256: 0000000000000000

Backtrace: 0x400d3472:0x3ffb1ef0 0x400d3507:0x3ffb1f10 0x400d3523:0x3ffb1f30 0x400d3579:0x3ffb1f50 0x400d0c85:0x3ffb1f80 0x400da251:0x3ffb1fb0 0x40089792:0x3ffb1fd0

Rebooting...
ets Jul 29 2019 12:21:46

rst:0xc (SW_CPU_RESET),boot:0x1b (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:10124
load:0x40080400,len:5856
entry 0x400806a8
Connecting to WiFi .....192.168.3.143
String(humidity).c_str() 2.00
String(humidity).c_str() 2.20
String(humidity).c_str() 2.40
String(humidity).c_str() 2.60
String(humidity).c_str() 2.80
String(humidity).c_str() 3.00
String(humidity).c_str() 3.20
String(humidity).c_str() 3.40
String(humidity).c_str() 3.60
String(humidity).c_str() 3.80
String(humidity).c_str() 4.00
String(humidity).c_str() 4.20
String(humidity).c_str() 4.40
String(humidity).c_str() 4.60
String(humidity).c_str() 4.80
String(humidity).c_str() 5.00
String(humidity).c_str() 5.20
String(humidity).c_str() 5.40
String(humidity).c_str() 5.60
String(humidity).c_str() 5.80
String(humidity).c_str() 6.00
String(humidity).c_str() 6.20
String(humidity).c_str() 6.40
String(humidity).c_str() 6.60
String(humidity).c_str() 6.80
String(humidity).c_str() 7.00
String(humidity).c_str() 7.20
String(humidity).c_str() 7.40
String(humidity).c_str() 7.60
String(humidity).c_str() 7.80
String(humidity).c_str() 8.00
String(humidity).c_str() 8.20
String(humidity).c_str() 8.40
String(humidity).c_str() 8.60
String(humidity).c_str() 8.80
String(humidity).c_str() 9.00
String(humidity).c_str() 9.20
String(humidity).c_str() 9.40
String(humidity).c_str() 9.60
String(humidity).c_str() 9.80
String(humidity).c_str() 10.00
String(humidity).c_str() 10.20
String(humidity).c_str() 10.40
String(humidity).c_str() 10.60
String(humidity).c_str() 10.80
String(humidity).c_str() 11.00
String(humidity).c_str() 11.20
String(humidity).c_str() 11.40
String(humidity).c_str() 11.60
String(humidity).c_str() 11.80
String(humidity).c_str() 12.00
String(humidity).c_str() 12.20
String(humidity).c_str() 12.40
String(humidity).c_str() 12.60
String(humidity).c_str() 12.80
String(humidity).c_str() 13.00
String(humidity).c_str() 13.20
String(humidity).c_str() 13.40
String(humidity).c_str() 13.60
String(humidity).c_str() 13.80
String(humidity).c_str() 14.00
String(humidity).c_str() 14.20
String(humidity).c_str() 14.40
String(humidity).c_str() 14.60
String(humidity).c_str() 14.80
String(humidity).c_str() 15.00
String(humidity).c_str() 15.20
String(humidity).c_str() 15.40
String(humidity).c_str() 15.60
String(humidity).c_str() 15.80
String(humidity).c_str() 16.00
String(humidity).c_str() 16.20
String(humidity).c_str() 16.40
String(humidity).c_str() 16.60
String(humidity).c_str() 16.80
String(humidity).c_str() 17.00
String(humidity).c_str() 17.20
String(humidity).c_str() 17.40
String(humidity).c_str() 17.60
String(humidity).c_str() 17.80
String(humidity).c_str() 18.00
String(humidity).c_str() 18.20
String(humidity).c_str() 18.40
String(humidity).c_str() 18.60
String(humidity).c_str() 18.80
String(humidity).c_str() 19.00
String(humidity).c_str() 19.20
String(humidity).c_str() 19.40
String(humidity).c_str() 19.60
String(humidity).c_str() 19.80
String(humidity).c_str() 20.00
String(humidity).c_str() 20.20
String(humidity).c_str() 20.40
String(humidity).c_str() 20.60
String(humidity).c_str() 20.80
String(humidity).c_str() 21.00
String(humidity).c_str() 21.20
String(humidity).c_str() 21.40
String(humidity).c_str() 21.60
String(humidity).c_str() 21.80
String(humidity).c_str() 22.00
String(humidity).c_str() 22.20
String(humidity).c_str() 22.40
String(humidity).c_str() 22.60
String(humidity).c_str() 22.80
String(humidity).c_str() 23.00
String(humidity).c_str() 23.20
String(humidity).c_str() 23.40
String(humidity).c_str() 23.60
String(humidity).c_str() 23.80
String(humidity).c_str() 24.00
String(humidity).c_str() 24.20
String(humidity).c_str() 24.40
String(humidity).c_str() 24.60
String(humidity).c_str() 24.80
String(humidity).c_str() 25.00
String(humidity).c_str() 25.20
String(humidity).c_str() 25.40
String(humidity).c_str() 25.60
String(humidity).c_str() 25.80
String(humidity).c_str() 26.00
String(humidity).c_str() 26.20
String(humidity).c_str() 26.40
String(humidity).c_str() 26.60
String(humidity).c_str() 26.80
String(humidity).c_str() 27.00
String(humidity).c_str() 27.20
String(humidity).c_str() 27.40
String(humidity).c_str() 27.60
String(humidity).c_str() 27.80
String(humidity).c_str() 28.00
String(humidity).c_str() 28.20
String(humidity).c_str() 28.40
String(humidity).c_str() 28.60
String(humidity).c_str() 28.80
String(humidity).c_str() 29.00
String(humidity).c_str() 29.20
String(humidity).c_str() 29.40
String(humidity).c_str() 29.60
String(humidity).c_str() 29.80
String(humidity).c_str() 30.00
String(humidity).c_str() 30.20
String(humidity).c_str() 30.40
String(humidity).c_str() 30.60
String(humidity).c_str() 30.80
String(humidity).c_str() 31.00
String(humidity).c_str() 31.20
String(humidity).c_str() 31.40
String(humidity).c_str() 31.60
String(humidity).c_str() 31.80
String(humidity).c_str() 32.00
String(humidity).c_str() 32.20
String(humidity).c_str() 32.40
String(humidity).c_str() 32.60
String(humidity).c_str() 32.80
String(humidity).c_str() 33.00
String(humidity).c_str() 33.20
String(humidity).c_str() 33.40
String(humidity).c_str() 33.60
String(humidity).c_str() 33.80
String(humidity).c_str() 34.00
String(humidity).c_str() 34.20
String(humidity).c_str() 34.40
String(humidity).c_str() 34.60
String(humidity).c_str() 34.80
String(humidity).c_str() 35.00
String(humidity).c_str() 35.20
String(humidity).c_str() 35.40
String(humidity).c_str() 35.60
String(humidity).c_str() 35.80
String(humidity).c_str() 36.00
String(humidity).c_str() 36.20
String(humidity).c_str() 36.40
String(humidity).c_str() 36.60
String(humidity).c_str() 36.80
String(humidity).c_str() 37.00
String(humidity).c_str() 37.20
String(humidity).c_str() 37.40
String(humidity).c_str() 37.60
String(humidity).c_str() 37.80
String(humidity).c_str() 38.00
String(humidity).c_str() 38.20
String(humidity).c_str() 38.40
String(humidity).c_str() 38.60
String(humidity).c_str() 38.80
String(humidity).c_str() 39.00
String(humidity).c_str() 39.20
String(humidity).c_str() 39.40
String(humidity).c_str() 39.60
String(humidity).c_str() 39.80
String(humidity).c_str() 40.00
String(humidity).c_str() 40.20
String(humidity).c_str() 40.40
String(humidity).c_str() 40.60
String(humidity).c_str() 40.80
String(humidity).c_str() 41.00
String(humidity).c_str() 41.20
String(humidity).c_str() 41.40
String(humidity).c_str() 41.60
String(humidity).c_str() 41.80
String(humidity).c_str() 42.00
String(humidity).c_str() 42.20
String(humidity).c_str() 42.40
String(humidity).c_str() 42.60
String(humidity).c_str() 42.80
String(humidity).c_str() 43.00
String(humidity).c_str() 43.20
String(humidity).c_str() 43.40
String(humidity).c_str() 43.60
String(humidity).c_str() 43.80
String(humidity).c_str() 44.00
String(humidity).c_str() 44.20
String(humidity).c_str() 44.40
String(humidity).c_str() 44.60
String(humidity).c_str() 44.80
String(humidity).c_str() 45.00
String(humidity).c_str() 45.20
String(humidity).c_str() 45.40
String(humidity).c_str() 45.60
String(humidity).c_str() 45.80
String(humidity).c_str() 46.00
String(humidity).c_str() 46.20
String(humidity).c_str() 46.40
String(humidity).c_str() 46.60
String(humidity).c_str() 46.80
String(humidity).c_str() 47.00
String(humidity).c_str() 47.20
String(humidity).c_str() 47.40
String(humidity).c_str() 47.60
String(humidity).c_str() 47.80
String(humidity).c_str() 48.00
String(humidity).c_str() 48.20
String(humidity).c_str() 48.40
String(humidity).c_str() 48.60
String(humidity).c_str() 48.80
String(humidity).c_str() 49.00
String(humidity).c_str() 49.20
String(humidity).c_str() 49.40
String(humidity).c_str() 49.60
String(humidity).c_str() 49.80
String(humidity).c_str() 50.00
String(humidity).c_str() 50.20
String(humidity).c_str() 50.40
String(humidity).c_str() 50.60
String(humidity).c_str() 50.80
String(humidity).c_str() 51.00
String(humidity).c_str() 51.20
String(humidity).c_str() 51.40
String(humidity).c_str() 51.60
String(humidity).c_str() 51.80
String(humidity).c_str() 52.00
String(humidity).c_str() 52.20
String(humidity).c_str() 52.40
String(humidity).c_str() 52.60
String(humidity).c_str() 52.80
String(humidity).c_str() 53.00
String(humidity).c_str() 53.20
String(humidity).c_str() 53.40
String(humidity).c_str() 53.60
String(humidity).c_str() 53.80
String(humidity).c_str() 54.00
String(humidity).c_str() 54.20
String(humidity).c_str() 54.40
String(humidity).c_str() 54.60
String(humidity).c_str() 54.80
String(humidity).c_str() 55.00
String(humidity).c_str() 55.20
String(humidity).c_str() 55.40
String(humidity).c_str() 55.60
String(humidity).c_str() 55.80
String(humidity).c_str() 56.00
String(humidity).c_str() 56.20
String(humidity).c_str() 56.40
String(humidity).c_str() 56.60
String(humidity).c_str() 56.80
String(humidity).c_str() 57.00
String(humidity).c_str() 57.20
String(humidity).c_str() 57.40
String(humidity).c_str() 57.60
String(humidity).c_str() 57.80
String(humidity).c_str() 58.00
String(humidity).c_str() 58.20
String(humidity).c_str() 58.40
String(humidity).c_str() 58.60
String(humidity).c_str() 58.80
String(humidity).c_str() 59.00
String(humidity).c_str() 59.20
String(humidity).c_str() 59.40
String(humidity).c_str() 59.60
String(humidity).c_str() 59.80
String(humidity).c_str() 60.00
String(humidity).c_str() 60.20
String(humidity).c_str() 60.40
String(humidity).c_str() 60.60
String(humidity).c_str() 60.80
String(humidity).c_str() 61.00
String(humidity).c_str() 61.20
String(humidity).c_str() 61.40
String(humidity).c_str() 61.60
String(humidity).c_str() 61.80
String(humidity).c_str() 62.00
String(humidity).c_str() 62.20
String(humidity).c_str() 62.40
String(humidity).c_str() 62.60
String(humidity).c_str() 62.80
String(humidity).c_str() 63.00
String(humidity).c_str() 63.20
String(humidity).c_str() 63.40
String(humidity).c_str() 63.60
String(humidity).c_str() 63.80
String(humidity).c_str() 64.00
String(humidity).c_str() 64.20
String(humidity).c_str() 64.40
String(humidity).c_str() 64.60
String(humidity).c_str() 64.80
String(humidity).c_str() 65.00
String(humidity).c_str() 65.20
String(humidity).c_str() 65.40
String(humidity).c_str() 65.60
String(humidity).c_str() 65.80
String(humidity).c_str() 66.00
String(humidity).c_str() 66.20
String(humidity).c_str() 66.40
String(humidity).c_str() 66.60
String(humidity).c_str() 66.80
String(humidity).c_str() 67.00
String(humidity).c_str() 67.20
String(humidity).c_str() 67.40
String(humidity).c_str() 67.60
String(humidity).c_str() 67.80

I thing the problem is not just at those lines, but happens when send more events to clients. I'm not sure.

looks like that is working did you try.

#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>

// Replace with your network credentials
const char* ssid = "****";
const char* password = "****";


// Create AsyncWebServer object on port 80
AsyncWebServer server(80);

// Create an Event Source on /events
AsyncEventSource events("/events");

// Timer variables
unsigned long lastTime = 0;  
unsigned long timerDelay = 500;

float temperature = 1.0;
float humidity = 2.0;
float pressure = 3.0;

// Initialize WiFi
void initWiFi() {

    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, password);
    Serial.print("Connecting to WiFi ..");
    while (WiFi.status() != WL_CONNECTED) {
        Serial.print('.');
        delay(1000);
    }
    Serial.println(WiFi.localIP());
}

String processor(const String& var){
  //getSensorReadings();
  //Serial.println(var);
  if(var == "TEMPERATURE"){
    return String(temperature);
  }
  else if(var == "HUMIDITY"){
    return String(humidity);
  }
  else if(var == "PRESSURE"){
    return String(pressure);
  }  
  return String();
}

const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML><html>
<head>
  <title>ESP Web Server</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
  <link rel="icon" href="data:,">
  <style>
    html {font-family: Arial; display: inline-block; text-align: center;}
    p { font-size: 1.2rem;}
    body {  margin: 0;}
    .topnav { overflow: hidden; background-color: #50B8B4; color: white; font-size: 1rem; }
    .content { padding: 20px; }
    .card { background-color: white; box-shadow: 2px 2px 12px 1px rgba(140,140,140,.5); }
    .cards { max-width: 800px; margin: 0 auto; display: grid; grid-gap: 2rem; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
    .reading { font-size: 1.4rem; }
  </style>
</head>
<body>
  <div class="topnav">
    <h1>BME280 WEB SERVER (SSE)</h1>
  </div>
  <div class="content">
    <div class="cards">
      <div class="card">
        <p><i class="fas fa-thermometer-half" style="color:#059e8a;"></i> TEMPERATURE</p><p><span class="reading"><span id="temp">%TEMPERATURE%</span> &deg;C</span></p>
      </div>
      <div class="card">
        <p><i class="fas fa-tint" style="color:#00add6;"></i> HUMIDITY</p><p><span class="reading"><span id="hum">%HUMIDITY%</span> &percnt;</span></p>
      </div>
      <div class="card">
        <p><i class="fas fa-angle-double-down" style="color:#e1e437;"></i> PRESSURE</p><p><span class="reading"><span id="pres">%PRESSURE%</span> hPa</span></p>
      </div>     
    </div>
  </div>
<script>
if (!!window.EventSource) {
 var source = new EventSource('/events');
 
 source.addEventListener('open', function(e) {
  console.log("Events Connected");
 }, false);
 source.addEventListener('error', function(e) {
  if (e.target.readyState != EventSource.OPEN) {
    console.log("Events Disconnected");
  }
 }, false);
 
 source.addEventListener('message', function(e) {
  console.log("message", e.data);
 }, false);
 
 source.addEventListener('temperature', function(e) {
  console.log("temperature", e.data);
  document.getElementById("temp").innerHTML = e.data;
 }, false);
 
 source.addEventListener('humidity', function(e) {
  console.log("humidity", e.data);
  document.getElementById("hum").innerHTML = e.data;
 }, false);
 
 source.addEventListener('pressure', function(e) {
  console.log("pressure", e.data);
  document.getElementById("pres").innerHTML = e.data;
 }, false);
}
</script>
</body>
</html>)rawliteral";

void setup() {
  Serial.begin(115200);
  initWiFi();
  //initBME();

  // Handle Web Server
  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", index_html, processor);
  });

  // Handle Web Server Events
  events.onConnect([](AsyncEventSourceClient *client){
    if(client->lastId()){
      Serial.printf("Client reconnected! Last message ID that it got is: %u\n", client->lastId());
    }
    // send event with message "hello!", id current millis
    // and set reconnect delay to 1 second
    client->send("hello!", NULL, millis(), 10000);
  });
  server.addHandler(&events);
  server.begin();
}

void loop() {
  if ((millis() - lastTime) > timerDelay) {

    // Serial.printf("\r\n\nTemperature = %.2f oC\n", temperature);
    // Serial.printf("\r\nHumidity = %.2f \n", humidity);
    // Serial.printf("\r\nPressure = %.2f hPa\n", pressure);

    // Send Events to the Web Client with the Sensor Readings
    events.send("ping",NULL,millis());
delay(1);
    events.send(String(temperature).c_str(),"temperature",millis());
delay(1);
   //Serial.print( "String(humidity).c_str() ");
//Serial.print( String(humidity).c_str() );
  //Serial.println();
events.send(String(humidity).c_str(),"humidity",millis());
delay(1);
    events.send(String(pressure).c_str(),"pressure",millis());
    delay(1);
    temperature+=0.1;
    humidity+=0.2;
    pressure+=0.3;

    lastTime = millis();
  }
}

? Does it work?

not tested.

#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>

// Replace with your network credentials
const char* ssid = "****";
const char* password = "****";


// Create AsyncWebServer object on port 80
AsyncWebServer server(80);

// Create an Event Source on /events
AsyncEventSource events("/events");

// Timer variables
unsigned long lastTime = 0;
unsigned long timerDelay = 500;

float temperature = 1.0;
float humidity = 2.0;
float pressure = 3.0;

// Initialize WiFi
void initWiFi() {

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.print("Connecting to WiFi ..");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print('.');
    delay(1000);
  }
  Serial.println(WiFi.localIP());
}

String processor(const String& var) {
  //getSensorReadings();
  //Serial.println(var);
  if (var == "TEMPERATURE") {
    return String(temperature);
  }
  else if (var == "HUMIDITY") {
    return String(humidity);
  }
  else if (var == "PRESSURE") {
    return String(pressure);
  }
  return String();
}

const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML><html>
<head>
  <title>ESP Web Server</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
  <link rel="icon" href="data:,">
  <style>
    html {font-family: Arial; display: inline-block; text-align: center;}
    p { font-size: 1.2rem;}
    body {  margin: 0;}
    .topnav { overflow: hidden; background-color: #50B8B4; color: white; font-size: 1rem; }
    .content { padding: 20px; }
    .card { background-color: white; box-shadow: 2px 2px 12px 1px rgba(140,140,140,.5); }
    .cards { max-width: 800px; margin: 0 auto; display: grid; grid-gap: 2rem; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
    .reading { font-size: 1.4rem; }
  </style>
</head>
<body>
  <div class="topnav">
    <h1>BME280 WEB SERVER (SSE)</h1>
  </div>
  <div class="content">
    <div class="cards">
      <div class="card">
        <p><i class="fas fa-thermometer-half" style="color:#059e8a;"></i> TEMPERATURE</p><p><span class="reading"><span id="temp">%TEMPERATURE%</span> &deg;C</span></p>
      </div>
      <div class="card">
        <p><i class="fas fa-tint" style="color:#00add6;"></i> HUMIDITY</p><p><span class="reading"><span id="hum">%HUMIDITY%</span> &percnt;</span></p>
      </div>
      <div class="card">
        <p><i class="fas fa-angle-double-down" style="color:#e1e437;"></i> PRESSURE</p><p><span class="reading"><span id="pres">%PRESSURE%</span> hPa</span></p>
      </div>     
    </div>
  </div>
<script>
if (!!window.EventSource) {
 var source = new EventSource('/events');

 source.addEventListener('open', function(e) {
  console.log("Events Connected");
 }, false);
 source.addEventListener('error', function(e) {
  if (e.target.readyState != EventSource.OPEN) {
    console.log("Events Disconnected");
  }
 }, false);

 source.addEventListener('message', function(e) {
  console.log("message", e.data);
 }, false);

 source.addEventListener('temperature', function(e) {
  console.log("temperature", e.data);
  document.getElementById("temp").innerHTML = e.data;
 }, false);

 source.addEventListener('humidity', function(e) {
  console.log("humidity", e.data);
  document.getElementById("hum").innerHTML = e.data;
 }, false);

 source.addEventListener('pressure', function(e) {
  console.log("pressure", e.data);
  document.getElementById("pres").innerHTML = e.data;
 }, false);
}
</script>
</body>
</html>)rawliteral";

void setup() {
  Serial.begin(115200);
  initWiFi();
  //initBME();

  // Handle Web Server
  server.on("/", HTTP_GET, [](AsyncWebServerRequest * request) {
    request->send_P(200, "text/html", index_html, processor);
  });

  // Handle Web Server Events
  events.onConnect([](AsyncEventSourceClient * client) {
    if (client->lastId()) {
      Serial.printf("Client reconnected! Last message ID that it got is: %u\n", client->lastId());
    }
    // send event with message "hello!", id current millis
    // and set reconnect delay to 1 second
    client->send("hello!", NULL, millis(), 10000);
  });
  server.addHandler(&events);
  server.begin();
}
unsigned long timeToSend = 500;
unsigned long TimePast = millis();
int Count = 0;
void loop() 
{
  //if ((millis() - lastTime) > timerDelay) {

  // Serial.printf("\r\n\nTemperature = %.2f oC\n", temperature);
  // Serial.printf("\r\nHumidity = %.2f \n", humidity);
  // Serial.printf("\r\nPressure = %.2f hPa\n", pressure);
  switch (Count)
  {
    case 0:
      events.send("ping", NULL, millis() );
      TimePast = millis();
      Count = 1;
      break;
    case 1:
      if ( millis() - TimePast >= timeToSend)
      {
        events.send(String(temperature).c_str(), "temperature", millis());
        Count = 2;
        TimePast = millis();
      }
    case 2:
      if ( millis() - TimePast >= timeToSend)
      {
        events.send(String(humidity).c_str(), "humidity", millis());
        Count = 3;
        TimePast = millis();
      }
      break;
    case 3:
      if ( millis() - TimePast >= timeToSend)
      {
        events.send(String(pressure).c_str(), "pressure", millis());
        Count = 0;
      }
      break;
    default:
      Count = 0;
      TimePast = millis();
      break;
  }

      temperature += 0.1;
      humidity += 0.2;
      pressure += 0.3;
}

gets rid of delay()

No, Return same exception and reboot! For me the main problem is the unconditional restart. How to stop this?

What do you think I was trying to figure out?

Anyways. Good luck.

Thank you very much my friend!

Best Regards,

PS. Is it possible write to author of this library or some arduino support?

Hello,
Could this be a problem that cause reboot?

Min.Heap Size:328436

Heap Size:259796
Heap Size:254732
Heap Size:259800
Heap Size:259808