Wetterstation - keine Datenübernahme

Hallo ihr lieben,

ich arbeite nebenbei an meiner Wetterstation. Die Ausgabe auf dem Webserver läuft, allerdings leider ohne die entsprechenden Sensorwerte. Die DHT Werte kommen im Seriellen Monitor an, werden aber nicht weiter ausgegeben. Das Anonemeter habe ich seperat auch schon getestet und der Code müsste funktionieren. Ich nehme einfach an, dass auch hier der Wert nicht mit übergeben wird. Wo ist mein Denkfehler?

#include <WiFi.h> 
#include <Arduino.h>
#include "DHT.h"
#include <dht11.h>
#include <Adafruit_Sensor.h>
#include <NTP.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define uvsensor 13
#define photoresistor 32

const int fan1 = 13;
const int fan2 = 5;
const int anemosensor = 26;

WiFiUDP wifiUdp;
NTP ntp(wifiUdp);
WiFiServer server(80);  
String textfeld;
const int anemoPin = 2; 
int anemoValue = 0; 
float sensorVoltage = 0; 
float windSpeed = 0;
float voltageConversionConstant = .004882814; //This constant maps the value provided from the analog read function, which ranges from 0 to 1023, to actual voltage, which ranges from 0V to 5V[/color]
int sensorDelay = 1000; //Delay between sensor readings, measured in milliseconds (ms)

float voltageMin = 0; // Mininum output voltage from anemometer in mV.
float windSpeedMin = 0; // Wind speed in meters/sec corresponding to minimum voltage

float voltageMax = 4.0; // Maximum output voltage from anemometer in mV.
float windSpeedMax = 14; // Wind speed in meters/sec corresponding to maximum voltage

// Temp und Humity

int Wartezeit = 5000;

// Pin des Sensors
int SENSOR_DHT = 33;

// DHT11
#define SensorTyp DHT11

DHT dht(SENSOR_DHT, SensorTyp); 
float Temperatur;
float Luftfeuchtigkeit;
void setup() {
  //  WLAN ----------------------------------------------------------------------
  Serial.begin(115200);
  dht.begin();                                      
  Serial.println("Verbindung zum Netzwerk wird aufgebaut");  
  WiFi.begin("ssid", "netzwerkschlüssel");   
  while (WiFi.status() != WL_CONNECTED) {                    
    delay(500);
    Serial.print(".");
  }
  pinMode (anemoPin, INPUT_PULLUP);
  Serial.println("Erfolgreich verbunden - IP Addresse:");  
  Serial.println(WiFi.localIP());
  // Uhrzeit
  ntp.ruleDST("CEST", Last, Sun, Mar, 2, 120);  
  ntp.ruleSTD("CET", Last, Sun, Oct, 3, 60);   
  ntp.begin();
  server.begin();  // Server starten
}


void loop() {
  WiFiClient client = server.available();  // Überprüft ob eine Anfrage vorhanden ist

  if (client) {                       // Falls ein Client sich verbindet
    Serial.println("Neuer Client:");  // Für die Anzeige im Seriellen Monitor das sich wer verbunden hat
    String position = "";             // Platzhalter für eingehende Nachrichten

    while (client.connected()) {  // Schleife währendessen ein Client verbunden ist
      if (client.available()) {   // Wenn es was zu lesen gibt, sammeln und in den Serial schreiben
        char symbol = client.read();
        Serial.write(symbol);
        textfeld += symbol;
        if (symbol == '\n') {  // Wenn eine neue Zeile kommt

          if (position.length() == 0) {  // Hier ist die HTTP-Antwort beendet und nun kann was geschickt werden

            client.println("HTTP/1.1 200 OK");  // Einfacher HTTP-textfeld
            client.println("Content-type:text/html");
            client.println("Connection: close");
            client.println();
            client.println("<!DOCTYPE html><html>");  // Ab hier wird die HTML-Seite gezeigt
            client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
            client.println("<meta charset=\"utf-8\"><meta http-equiv=\"refresh\" content=\"120\">");
            client.println("<style>body { text-align: center; font-family: Arial;}");  // Eine schöne Tabelle erstellen
            client.println("table { border-collapse: collapse; margin-left:auto; margin-right:auto; }");
            client.println("th { padding: 12px; background-color: #00695c; color: white; }");
            client.println("tr { border: 1px solid #dddddd; padding: 12px; }");
            client.println("td { border: none; padding: 12px; }");
            client.println("</style></head><body><h1>Wetter Kaulsdorf Nord</h1>");
            ntp.update();
            client.println(ntp.formattedTime("%A,&nbsp; %d. %B %Y"));  // dd. Mmm yyyy
            client.println("</br>");
            client.println(ntp.formattedTime("%T"));
            client.println("<table><tr><th>Messgr&ouml;&szlig;e </th><th>Messwert</th></tr>");  // Namen der Tabellen Eintrage
            temphumity();
          client.println("<tr><td>Temperatur</td><td>");                                        // Eintrag Temperatur
          client.println(Temperatur);
          client.println(" *C</td></tr>");
         

          client.println("<tr><td>Luftfeuchtigkeit</td><td>");  // Eintrag Luftfeuchtigkeit
          client.println(Luftfeuchtigkeit);
          client.println(" %</td></tr>");
          windmessung();
          client.println("<tr><td>Windgeschwindigkeit</td><td>");
          client.println(windSpeed*3.6);
          client.println("km/h</br>");
          client.println(windSpeed);
          client.println("m/s </td></tr>");
          int uvmessung = analogRead(uvsensor);
          float light = analogRead(photoresistor);
          client.println("<tr><td> Helligkeit und UV</td><td>");
        switch (uvmessung) {
  case 1: client.println ("Keine Schutzmaßnahmen nötig</td></tr>");break;
  case 2: client.println ("Keine Schutzmaßnahmen nötig</td></tr>");break;
  case 3: client.println ("<b>Schutz erforderlich</b><br>In den Mittagsstunden Schatten aufsuchen<br>entsprechende Kleidung,Hut und Sonnenbrille tragen<br>Sonnenschutzmittel mit ausreichendem LSF</td></tr>");break;
  case 4: client.println ("<b>Schutz erforderlich</b><br>In den Mittagsstunden Schatten aufsuchen<br>entsprechende Kleidung,Hut und Sonnenbrille tragen<br>Sonnenschutzmittel mit ausreichendem LSF</td></tr>");break;
  case 5: client.println ("<b>Schutz erforderlich</b><br>In den Mittagsstunden Schatten aufsuchen<br>entsprechende Kleidung,Hut und Sonnenbrille tragen<br>Sonnenschutzmittel mit ausreichendem LSF</td></tr>");break;
  case 6: client.println ("<b>Schutz erforderlich</b><br>In den Mittagsstunden Schatten aufsuchen<br>entsprechende Kleidung,Hut und Sonnenbrille tragen<br>Sonnenschutzmittel mit ausreichendem LSF</td></tr>");break;
  case 7: client.println ("<b>Schutz erforderlich</b><br>In den Mittagsstunden Schatten aufsuchen<br>entsprechende Kleidung,Hut und Sonnenbrille tragen<br>Sonnenschutzmittel mit ausreichendem LSF</td></tr>");break;
  case 8: client.println ("<b>Schutz UNBEDINGT erforderlich</b><br>In den Mittagsstunden nicht draußen aufhalten<br>Im Schattenaufhalten<br>entsprechende Kleidung,Hut und Sonnenbrille tragen<br>Sonnenschutzmittel mit ausreichendem LSF</td></tr>");break;
  case 9: client.println ("<b>Schutz UNBEDINGT erforderlich</b><br>In den Mittagsstunden nicht draußen aufhalten<br>Im Schattenaufhalten<br>entsprechende Kleidung,Hut und Sonnenbrille tragen<br>Sonnenschutzmittel mit ausreichendem LSF</td></tr>");break;
  case 10: client.println ("<b>Schutz UNBEDINGT erforderlich</b><br>In den Mittagsstunden nicht draußen aufhalten<br>Im Schattenaufhalten<br>entsprechende Kleidung,Hut und Sonnenbrille tragen<br>Sonnenschutzmittel mit ausreichendem LSF</td></tr>");break;
  case 11: client.println ("<b>Schutz UNBEDINGT erforderlich</b><br>In den Mittagsstunden nicht draußen aufhalten<br>Im Schattenaufhalten<br>entsprechende Kleidung,Hut und Sonnenbrille tragen<br>Sonnenschutzmittel mit ausreichendem LSF</td></tr>");break;
  default: client.println ("Error</td></tr>");
}
        }
      }
    }
  }
  
  }}

void windmessung() {

anemoValue = analogRead(anemoPin); //Get a value between 0 and 1023 from the analog pin connected to the anemometer

sensorVoltage = anemoValue * voltageConversionConstant; //Convert sensor value to actual voltage

//Convert voltage value to wind speed using range of max and min voltages and wind speed for the anemometer
if (sensorVoltage < voltageMin){
windSpeed = 0; //Check if voltage is below minimum value. If so, set wind speed to zero.
}else {
 windSpeed = (sensorVoltage - voltageMin)*windSpeedMax/(voltageMax - voltageMin); //For voltages above minimum value, use the linear relationship to calculate wind speed.
}
}
void temphumity(){
  String Temperatur = String(dht.readTemperature());
  Temperatur.replace(".", ",");
  Serial.println("Temperatur: " + Temperatur + " °C");
  String Luftfeuchtigkeit = String(dht.readHumidity());
  Luftfeuchtigkeit.replace(".", ",");
  Serial.println("Luftfeuchtigkeit: " + Luftfeuchtigkeit + " %");
  Serial.println();
  delay(Wartezeit);
}

tippe oder füge den Code hier ein

für welchen microcontroller soll das sein?

edit: Und warum fängst du nach einem Monat einen neue Frage an, bevor du deinen alte Frage abschließt?

https://forum.arduino.cc/t/webserver-wetterstation/1377014

Dein Problem ist die doppelte initialisierung der Variablen.
Nimm das String aus der Funktion "temphumity" raus und ändere in der Initialisierung am Anfang float in String für die Sensorwerte.
Aktuell hat die Variable (Temperatur und Luffeuchtigkeit) nur in der Funktion eine Gültigkeit.

Auch ein Problem machen deine delays.

Dann hoffen wir mal, das der TO dazu gelernt hat und hier alle Fragen zeitnah beantwortet.

Weil ich mit dem Code besser klar komme und ich neue bzw andere Hardware habe. Ich benutze ein edit: ESP32 WROOM-32 Board

Dann muss ein aktueller Sketch aber Fehler zeigen !
Und der Link zu deinem Board fehlt immer noch. ESP8288 ist nur eine Nummer die es als ESP nicht gibt.

@daria87
Bitte bleibe mit deinen Fragen hier im Forum.
Fragen zum Thread werde ich nur hier beantworten.
Danke

das Board

Und wo ist das ein ESP8288 ?

Es ist ein ESP32 WROOM-32 !

Also bitte die Doku richtig lesen.

Ok vielen Dank @ HotSystems. Die DHT Daten funktionieren jetzt

Prima, dass es jetzt funktioniert.

Aber mal die Frage: Wie kommst du auf ESP8288 ?

Wenns das war, dann poste deinen aktualisierten Code in Codetags und markiere den Post von HotSystems als Lösung.

Wenns noch was nicht funktionierendes gibt - poste den aktualsierten Code in Codetags und beschreibe was nicht funktioniert.

Wenn du noch weitere Infos haben möchtest - gib bescheid.

  1. Die Seite lädt nicht in sich neu, sondern wird alle 5 sek untereinander neu eingefügt.
  2. Funktioniert aktuell die Übernahme vom Anemosensor nicht. Wie schon geschrieben, hat der Code seperat funktioniert, mit seriellem Monitor.
  3. Licht und UV Sensor springen im Switch Case immer in default. Ich denke jetzt einfach mal das selbe Problem mit der Datenübernahme.

Da die Seite wie im Delay Wartezeit alle 5 sek neu prüft, wird nicht mehrmals die gleiche Ausgabe getätigt. (Ohne Delay bekomme ich min 5x den selben Zeitstempel mit identischen Werten).

#include <WiFi.h> 
#include <Arduino.h>
#include "DHT.h"
#include <dht11.h>
#include <Adafruit_Sensor.h>
#include <NTP.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define uvsensor 13
#define photoresistor 32

const int fan1 = 13;
const int fan2 = 5;
const int anemosensor = 26;

WiFiUDP wifiUdp;
NTP ntp(wifiUdp);
WiFiServer server(80);  
String textfeld;
const int anemoPin = 2; 
int anemoValue = 0; 
float sensorVoltage = 0; 
float windSpeed = 0;
float voltageConversionConstant = .004882814; //This constant maps the value provided from the analog read function, which ranges from 0 to 1023, to actual voltage, which ranges from 0V to 5V[/color]
int sensorDelay = 1000; //Delay between sensor readings, measured in milliseconds (ms)

float voltageMin = 0; // Mininum output voltage from anemometer in mV.
float windSpeedMin = 0; // Wind speed in meters/sec corresponding to minimum voltage

float voltageMax = 4.0; // Maximum output voltage from anemometer in mV.
float windSpeedMax = 14; // Wind speed in meters/sec corresponding to maximum voltage

// Temp und Humity
String Temperatur;
String Luftfeuchtigkeit;

int Wartezeit = 5000;

// Pin des Sensors
int SENSOR_DHT = 33;

// DHT11
#define SensorTyp DHT11

DHT dht(SENSOR_DHT, SensorTyp); 

void setup() {
  //  WLAN ----------------------------------------------------------------------
  Serial.begin(115200);
  dht.begin();                                      
  Serial.println("Verbindung zum Netzwerk wird aufgebaut");  
  WiFi.begin("xxxx", "xxxx");   
  while (WiFi.status() != WL_CONNECTED) {                    
    delay(500);
    Serial.print(".");
  }
  pinMode (anemoPin, INPUT_PULLUP);
  Serial.println("Erfolgreich verbunden - IP Addresse:");  
  Serial.println(WiFi.localIP());
  // Uhrzeit
  ntp.ruleDST("CEST", Last, Sun, Mar, 2, 120);  
  ntp.ruleSTD("CET", Last, Sun, Oct, 3, 60);   
  ntp.begin();
  server.begin();  // Server starten
}


void loop() {
  WiFiClient client = server.available();  // Überprüft ob eine Anfrage vorhanden ist

  if (client) {                       // Falls ein Client sich verbindet
    Serial.println("Neuer Client:");  // Für die Anzeige im Seriellen Monitor das sich wer verbunden hat
    String position = "";             // Platzhalter für eingehende Nachrichten

    while (client.connected()) {  // Schleife währendessen ein Client verbunden ist
      if (client.available()) {   // Wenn es was zu lesen gibt, sammeln und in den Serial schreiben
        char symbol = client.read();
        Serial.write(symbol);
        textfeld += symbol;
        if (symbol == '\n') {  // Wenn eine neue Zeile kommt

          if (position.length() == 0) {  // Hier ist die HTTP-Antwort beendet und nun kann was geschickt werden

            client.println("HTTP/1.1 200 OK");  // Einfacher HTTP-textfeld
            client.println("Content-type:text/html");
            client.println("Connection: close");
            client.println();
            client.println("<!DOCTYPE html><html>");  // Ab hier wird die HTML-Seite gezeigt
            client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
            client.println("<meta charset=\"utf-8\"><meta http-equiv=\"refresh\" content=\"120\">");
            client.println("<style>body { text-align: center; font-family: Arial;}");  // Eine schöne Tabelle erstellen
            client.println("table { border-collapse: collapse; margin-left:auto; margin-right:auto; }");
            client.println("th { padding: 12px; background-color: #00695c; color: white; }");
            client.println("tr { border: 1px solid #dddddd; padding: 12px; }");
            client.println("td { border: none; padding: 12px; }");
            client.println("</style></head><body><h1>Wetter Kaulsdorf Nord</h1>");
            ntp.update();
            client.println(ntp.formattedTime("%A,&nbsp; %d. %B %Y"));  // dd. Mmm yyyy
            client.println("</br>");
            client.println(ntp.formattedTime("%T"));
            client.println("<table><tr><th>Messgr&ouml;&szlig;e </th><th>Messwert</th></tr>");  // Namen der Tabellen Eintrage
            temphumity();
          client.println("<tr><td>Temperatur</td><td>");                                        // Eintrag Temperatur
          client.println(Temperatur);
          client.println(" *C</td></tr>");
         

          client.println("<tr><td>Luftfeuchtigkeit</td><td>");  // Eintrag Luftfeuchtigkeit
          client.println(Luftfeuchtigkeit);
          client.println(" %</td></tr>");
          windmessung();
          client.println("<tr><td>Windgeschwindigkeit</td><td>");
          client.println(windSpeed*3.6);
          client.println("km/h</br>");
          client.println(windSpeed);
          client.println("m/s </td></tr>");
          int uvmessung = analogRead(uvsensor);
          float light = analogRead(photoresistor);
          client.println("<tr><td> Helligkeit und UV</td><td>");
        switch (uvmessung) {
  case 1: client.println ("Keine Schutzmaßnahmen nötig</td></tr>");break;
  case 2: client.println ("Keine Schutzmaßnahmen nötig</td></tr>");break;
  case 3: client.println ("<b>Schutz erforderlich</b><br>In den Mittagsstunden Schatten aufsuchen<br>entsprechende Kleidung,Hut und Sonnenbrille tragen<br>Sonnenschutzmittel mit ausreichendem LSF</td></tr>");break;
  case 4: client.println ("<b>Schutz erforderlich</b><br>In den Mittagsstunden Schatten aufsuchen<br>entsprechende Kleidung,Hut und Sonnenbrille tragen<br>Sonnenschutzmittel mit ausreichendem LSF</td></tr>");break;
  case 5: client.println ("<b>Schutz erforderlich</b><br>In den Mittagsstunden Schatten aufsuchen<br>entsprechende Kleidung,Hut und Sonnenbrille tragen<br>Sonnenschutzmittel mit ausreichendem LSF</td></tr>");break;
  case 6: client.println ("<b>Schutz erforderlich</b><br>In den Mittagsstunden Schatten aufsuchen<br>entsprechende Kleidung,Hut und Sonnenbrille tragen<br>Sonnenschutzmittel mit ausreichendem LSF</td></tr>");break;
  case 7: client.println ("<b>Schutz erforderlich</b><br>In den Mittagsstunden Schatten aufsuchen<br>entsprechende Kleidung,Hut und Sonnenbrille tragen<br>Sonnenschutzmittel mit ausreichendem LSF</td></tr>");break;
  case 8: client.println ("<b>Schutz UNBEDINGT erforderlich</b><br>In den Mittagsstunden nicht draußen aufhalten<br>Im Schattenaufhalten<br>entsprechende Kleidung,Hut und Sonnenbrille tragen<br>Sonnenschutzmittel mit ausreichendem LSF</td></tr>");break;
  case 9: client.println ("<b>Schutz UNBEDINGT erforderlich</b><br>In den Mittagsstunden nicht draußen aufhalten<br>Im Schattenaufhalten<br>entsprechende Kleidung,Hut und Sonnenbrille tragen<br>Sonnenschutzmittel mit ausreichendem LSF</td></tr>");break;
  case 10: client.println ("<b>Schutz UNBEDINGT erforderlich</b><br>In den Mittagsstunden nicht draußen aufhalten<br>Im Schattenaufhalten<br>entsprechende Kleidung,Hut und Sonnenbrille tragen<br>Sonnenschutzmittel mit ausreichendem LSF</td></tr>");break;
  case 11: client.println ("<b>Schutz UNBEDINGT erforderlich</b><br>In den Mittagsstunden nicht draußen aufhalten<br>Im Schattenaufhalten<br>entsprechende Kleidung,Hut und Sonnenbrille tragen<br>Sonnenschutzmittel mit ausreichendem LSF</td></tr>");break;
  default: client.println ("Error</td></tr>");
}
        }
      }
      }
  }
  
  }}

void windmessung() {

anemoValue = analogRead(anemoPin); //Get a value between 0 and 1023 from the analog pin connected to the anemometer

sensorVoltage = anemoValue * voltageConversionConstant; //Convert sensor value to actual voltage

//Convert voltage value to wind speed using range of max and min voltages and wind speed for the anemometer
if (sensorVoltage < voltageMin){
windSpeed = 0; //Check if voltage is below minimum value. If so, set wind speed to zero.
}else {
 windSpeed = (sensorVoltage - voltageMin)*windSpeedMax/(voltageMax - voltageMin); //For voltages above minimum value, use the linear relationship to calculate wind speed.
}
}
void temphumity(){
  Temperatur = (dht.readTemperature());
  Temperatur.replace(".", ",");
  Serial.println("Temperatur: " + Temperatur + " °C");
  Luftfeuchtigkeit = (dht.readHumidity());
  Luftfeuchtigkeit.replace(".", ",");
  Serial.println("Luftfeuchtigkeit: " + Luftfeuchtigkeit + " %");
  Serial.println();
  delay(Wartezeit);
}

Schritt 1: editiere deinen Post und poste Code in Code Tags.
hier nachlesen: HTTP integration - #9 by I-Connect - The Things Network

Schritt 2:
Auf einem ESP verwendet man für webseiten nicht den Webclient sondern den Webserver / HelloServer

schau dir mal meine Seite an:
eine ganz einfache Version:

etwas mehr Beispiele:

probier mal einen dieser Sketche aus.
Wenn das bei dir Läuft, integriere einen Sensor nach dem anderen.

Lass das NTP noch weg - auch das löst man auf einem ESP ganz anders.
Das machen wir wenn die Sensoren richtig angezeigt werden.

Gibt es irgendwas zu beachten um die Sensordaten einzufügen? Ganz normal mittels server.println()?

du sollst am ESP kein server.println nehmen sondern du baust erst die ganze Seite in einem Buffer zusammen (z.B. message) und überträgst dann die ganze Seite mit einem

  server.send(200, "text/html", message);

ok quasi doch den anderen Code nutzen

Also ich bin jetzt dank noiasca jetzt schon soweit, dass DHT und Regensensor funktionieren. Nun schwanken die °C um bis zu 8. Ich vermute das liegt daran, dass die Abfrage fast 1 zu 1 ausgegeben wird. Daher würde ich es gern so haben, dass die Abfrage einmal in der Minute getätigt wird bzw. die Übertragung auf den Server nur alle Minute stattfindet.


#include <Arduino.h>
#include "DHT.h"

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

#define DHTPIN 36
#define LIGHTPIN        14  // Pin 2 funktioniert nicht, da ADC2
#define RAIN_SENSOR 33
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

int Steam_old = 0;
const char *SSID = "SSID";
const char *PASS = "Password";

AsyncWebServer server(80);

const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML>
<html>
<title>Wetterstation Kaulsdorf-Nord</title>
<head>
  <meta charset="utf-8">
</head>
<body>
  <div class="btn">
    <div id="dht"></div>
    
  </div>
</body>
<script>
    setInterval(function () {
      var xhttp = new XMLHttpRequest();
      xhttp.onreadystatechange = function () {
        if (this.readyState == 4 && this.status == 200) {
          // This code searches for the component with ID "dht" and replaces the component content with the returned content
          document.getElementById("dht").innerHTML = this.responseText;
        }
      };
      // Request "/dht" via "GET"
      xhttp.open("GET", "/dht", true);
      xhttp.send();
    }, 1000)
</script>
<style>
  /*Web page*/
  html,body{margin: 0;width: 100%;height: 100%;}
  body{display: flex;justify-content: center;align-items: center;}
  #dht{text-align: center;width: 100%;height: 100%;color: #fff;background-color: #47a047;font-size: 48px;}
  .btn button{width: 100%;height: 100%;border: none;font-size: 30px;color: #fff;position: relative;}
  button{color: #ffff;background-color: #89e689;margin-top: 20px;}
  .btn button:active{top: 2px;}
</style>
</html>
)rawliteral";


String Merge_Data(void)
{
  float Temperature = random(200, 300)/10.0; //dht.readTemperature();  // ersetzt fehlenden Sensor
  float Humidity = random(700, 900)/10.0; //dht.readHumidity();  // ersetzt fehlenden Sensor
  String dataBuffer;

 
  String Steam;
  String Light;
  
analogReadResolution(10);
  Steam_old = analogRead(RAIN_SENSOR);
  //Photoresistor
  Light = String(analogRead(LIGHTPIN));
  Serial.println (Steam_old);

  if (Steam_old < 500) {
    Steam="Es regnet.";
  }
 if (Steam_old >=500 && Steam_old <=1000) {
    Steam="Es nieselt.";
  }
  else {
    Steam="Es ist trocken.";
  }
  
  dataBuffer += "<p>";
  dataBuffer += "<h1>Sensoren Daten</h1>";
  dataBuffer += "<b>Temperatur:</b><b>";
  dataBuffer += Temperature;
  dataBuffer += "</b><b>℃</b><br/>";
  dataBuffer += "<b>Luftfeuchte:</b><b>";
  dataBuffer += Humidity;
  dataBuffer += "</b><b>%</b><br/>";
  dataBuffer += "<b>Regen:</b><b>";
  dataBuffer += Steam;
  dataBuffer += "</b><b></b><br/>";
  dataBuffer += "<b>Helligkeit:</b><b>";
  dataBuffer += Light;
  dataBuffer += "</b><b></b><br/>";

  return dataBuffer;
}

void Config_Callback(AsyncWebServerRequest *request)
{
  if (request->hasParam("value")) 
  {

    String HTTP_Payload = request->getParam("value")->value();

    Serial.printf("[%lu]%s\r\n", millis(), HTTP_Payload.c_str());

  }
  request->send(200, "text/plain", "OK"); 
}

void notFound(AsyncWebServerRequest *request) {
    request->send(404, "text/plain", "Not found");
}

void setup()
{
  dht.begin();
  Serial.begin(115200);
  delay(500);
  Serial.println("\nStart");
  
  WiFi.begin(SSID, PASS);
  while (!WiFi.isConnected())
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println("WiFi connected.");
  Serial.println("IP address: "); 
  Serial.println(WiFi.localIP());
  
  
  //Set pins modes 
  
  pinMode(RAIN_SENSOR,INPUT);
  pinMode(LIGHTPIN,INPUT);

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


  server.on("/dht", HTTP_GET, [](AsyncWebServerRequest *request)
            { request->send(200, "text/plain", Merge_Data().c_str()); });


  server.on("/set", HTTP_GET, Config_Callback);   

  server.begin();  
}

void loop(){
}

Hallo,
nein das kommt weil Du für die Temperatur zufällig generierte Werte verwendest.

Warum nimmst Du denn jetzt wieder eine so seltsame Vorlage die auf der AsysncWebServer lib beruht. mach doch das was @noiasca dir vorgeschlagen hat. Schau dir zunächst den HalloServer aus den Beispielen für den ESP an. @noiasca verwendet ebenfalls die standard lib für den ESP aus der zugehörigen core.
#include <ESP8266WebServer.h>

Wenn Du ganz einfach einsteigen willst dann kann ich dir noch mein Geschreibsel anbieten zum Webserver mit fetch anbieten.

oder gleich was fertiges

Heinz