#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>

#define DHTPIN 7     // Digital pin connected to the DHT sensor 

#define DHTTYPE    DHT11     // DHT11 (AM2302)

DHT_Unified dht(DHTPIN, DHTTYPE);

uint32_t delayMS;

String fortunes[5] = {
  "You will have a great day!",
  "Good things come to those who wait.",
  "A smile is your passport into the hearts of others.",
  "You are a person of culture and charm.",
  "The best way to predict the future is to create it."

};

float prevTemp = 0;
float prevHumidity = 0;

void setup() {
  Serial.begin(9600);
  dht.begin();
  Serial.println(F("DHTxx Unified Sensor Example"));

  sensor_t sensor;
  dht.temperature().getSensor(&sensor);

  delayMS = sensor.min_delay / 1000;  // Set delay between sensor readings based on sensor details
}

void loop() {
  sensors_event_t event;
  dht.temperature().getEvent(&event);

  if (isnan(event.temperature)) {
    Serial.println(F("Error reading temperature!"));
  }
  else {
    if (abs(event.temperature - prevTemp) >= 0.2) {
      Serial.print(F("Temperature: "));
      Serial.print(event.temperature);
      Serial.println(F("°C"));
      int index = random(5); // Generate a random index for the fortunes array
      Serial.println("Fortune Cookie Phrase: " + fortunes[index]);
      prevTemp = event.temperature;
    }
  }

  dht.humidity().getEvent(&event);

  if (isnan(event.relative_humidity)) {
    Serial.println(F("Error reading humidity!"));
  }
  else {
    if (abs(event.relative_humidity - prevHumidity) >= 1.0) {
      Serial.print(F("Humidity: "));
      Serial.print(event.relative_humidity);
      Serial.println(F("%"));
      int index = random(5); // Generate a random index for the fortunes array
      Serial.println("Fortune Cookie Phrase: " + fortunes[index]);
      prevHumidity = event.relative_humidity;
    }
  }

  delay(delayMS); // Add a delay based on sensor details
}
