#include <DHTesp.h>

#define LED_BLUE    23
#define LED_RED     22
#define DHT_PIN     15
DHTesp dhtSensor;

float temp = 0.0;
float temp_bup = 101.0;                   // Nicht realisitischer Wert, damit beim Programmstart 1 Ausgabe erfolgt
float hum = 0.0;
float hum_bup = 101.0;                    // Nicht realisitischer Wert, damit beim Programmstart 1 Ausgabe erfolgt

void setup() {
  pinMode( LED_BLUE, OUTPUT);             // GPIO als Ausgang definieren
  digitalWrite( LED_BLUE, LOW);           // Test-LED Blue = off
  pinMode( LED_RED, OUTPUT);              // GPIO als Ausgang definieren
  digitalWrite( LED_RED, LOW);            // Test-LED Red = off
 
  Serial.begin(115200);
  Serial.println("=============================================================================");
  Serial.println("Messung der Umgebungstemperatur und der Luftfeuchtigkeit mit dem Sensor DHT22");
  Serial.println("=============================================================================");
  dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
}

void loop() {
  TempAndHumidity  data = dhtSensor.getTempAndHumidity();
  temp = data.temperature;
  hum = data.humidity;
  if ((temp != temp_bup) || (hum != hum_bup)) {
    temp_bup = temp;
    hum_bup = hum;
    if (temp > 50.0) {
      digitalWrite( LED_RED, HIGH);           // Test-LED Red = on
      digitalWrite( LED_BLUE, LOW);           // Test-LED Blue = off
    } else if (temp < 0.0) {
      digitalWrite( LED_BLUE, HIGH);          // Test-LED Blue = on
      digitalWrite( LED_RED, LOW);            // Test-LED Red = off
    } else {
      digitalWrite( LED_BLUE, LOW);           // Test-LED Blue = off
      digitalWrite( LED_RED, LOW);            // Test-LED Red = off
    }
    if (temp < 0.0) {
      Serial.print("Temperatur: " + String(temp) + "°C     ");  
    } else {
      Serial.print("Temperatur: +" + String(temp) + "°C     ");
    }
    Serial.println("Luftfeuchtigkeit: " + String(hum) + "%");
  }
  delay(100);
}