#include <WiFi.h>
#include <HTTPClient.h>
#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>


const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* FIREBASE_HOST = "test-10e37-default-rtdb.firebaseio.com";
const char* FIREBASE_AUTH = "uyWibhaFFHuOEaBj5rCOaBkXSiSRLRqoU2cAVpGg";
const char* databaseURL = "https://test-10e37-default-rtdb.firebaseio.com/data2.json";


#define LED 12
#define DHT_PIN 5  
DHT dht(DHT_PIN, DHT22);

LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 16, 2);

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("Connected to WiFi");
  pinMode(LED, OUTPUT);
  dht.begin();
  LCD.init(); 
  LCD.backlight();
  Wire.begin(22, 21);  
}

void loop() {
  delay(1000); 
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();

  if (!isnan(humidity) && !isnan(temperature)) {
    Serial.printf("Humidity: %.2f%%, Temperature: %.2f°C\n", humidity, temperature);
    String data = String("{\"temperature\": ") + String(temperature) + String(", \"humidity\": ") + String(humidity) + String("}");

    HTTPClient http;
    http.begin(databaseURL);
    http.addHeader("Content-Type", "application/json");
    http.addHeader("Authorization", FIREBASE_AUTH);

    int httpResponseCode = http.PUT(data);

    if (httpResponseCode > 0) {
      Serial.print("Data sent successfully, response code: ");
      Serial.println(httpResponseCode);
    } else {
      Serial.print("Error sending data, response code: ");
      Serial.println(httpResponseCode);
    }

    http.end();

    LCD.setCursor(0, 0);
    LCD.print("Temperature: " + String(temperature));

    LCD.setCursor(0, 1);
    LCD.print("Humidity" +  String(humidity));
  } else {
    Serial.println("Failed to read from DHT sensor");
  }

  delay(500); 
}



esp:VIN
esp:GND.2
esp:D13
esp:D12
esp:D14
esp:D27
esp:D26
esp:D25
esp:D33
esp:D32
esp:D35
esp:D34
esp:VN
esp:VP
esp:EN
esp:3V3
esp:GND.1
esp:D15
esp:D2
esp:D4
esp:RX2
esp:TX2
esp:D5
esp:D18
esp:D19
esp:D21
esp:RX0
esp:TX0
esp:D22
esp:D23
dht2:VCC
dht2:SDA
dht2:NC
dht2:GND
led1:A
led1:C
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
lcd1:GND
lcd1:VCC
lcd1:SDA
lcd1:SCL