#include <LiquidCrystal_I2C.h>
#include "DHTesp.h"
#include <WiFi.h>
#include <ThingSpeak.h>;
#include <HTTPClient.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);
const int DHT_PIN = 13;
HTTPClient http;

DHTesp dhtSensor;

const char * myWriteAPIKey = "I7CI7S14Y4DBTZ2U";
unsigned long myChannelNumber = 2531978; //Replace it with your channel ID
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  //Serial.print("Connecting to WiFi");
  //WiFi.begin("Wokwi-GUEST", "", 6);
  // while (WiFi.status() != WL_CONNECTED) {
  //   delay(100);
  //   Serial.print(".");
  // }
  // Serial.println(" Connected!");

  lcd.init();
  lcd.backlight();

  dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
}

void loop() {
  String urlThingSpeak = "https://api.thingspeak.com/update?api_key=I7CI7S14Y4DBTZ2U&field1=";
  TempAndHumidity  data = dhtSensor.getTempAndHumidity();
  Serial.println("Temp: " + String(data.temperature, 2) + "°C");
  Serial.println("Humidity: " + String(data.humidity, 1) + "%");
  Serial.println("---");

  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Temp: " + String(data.temperature, 2) + " C");
  lcd.setCursor(0, 1);
  lcd.print("Humidity: " + String(data.humidity, 1) + "%");

  urlThingSpeak += String(data.temperature, 2) + "&field2=" + String(data.humidity, 1);
  Serial.println(urlThingSpeak);
  HTTPClient http;
  http.begin(urlThingSpeak);
  int httpCode = http.GET();
  if (httpCode > 0) {
    Serial.println("Update successful");
  } else {
    Serial.print("Error code: ");
    Serial.println(httpCode);
  }
  delay(1000); // Wait for a new reading from the sensor (DHT22 has ~0.5Hz sample rate)
}