#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <ThingSpeak.h>
#include <WiFi.h>

WiFiClient client;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";

#define SECRET_CH_ID 2109996			// replace 0000000 with your channel number
#define SECRET_WRITE_APIKEY "IP5YVTUBIYWHA5C0"   // replace XYZ with your channel write API Key
#define portPin 14 // define MQ2 analog pin
#define ledPin 27 // define MQ2 digital pin
LiquidCrystal_I2C lcd(0x27, 16, 2); // Dirección del dispositivo I2C y dimensiones del display


int potValor = 0; // khai báo biến chứa giá trị biến trở
unsigned long dataMillis = 0;

void setup() {
  Serial.begin(115200);

  pinMode(portPin, INPUT);// se configura el pin del boton como entrada
  pinMode(ledPin, OUTPUT); // se configura el pin de la sirena como salida
  lcd.init(); // Inicialización del LCD 16x2

  delay(1000);
  WiFi.disconnect();
  WiFi.begin(ssid, pass);
  Serial.print("Connecting to Wi-Fi");
  while (WiFi.status() != WL_CONNECTED)
  {
      Serial.print(".");
      delay(300);
  }
  Serial.println();
  Serial.print("Connected with IP: ");
  Serial.println(WiFi.localIP());
  Serial.println();
 
  ThingSpeak.begin(client);  // Initialize ThingSpeak

}

// funcion principal 
void loop() {

  potValor = analogRead(portPin);
  Serial.println(potValor);

  if(potValor >= 1365) {   
    digitalWrite(ledPin, HIGH);
    lcd.setCursor(0, 0); // Posicionar el cursor en la primera línea, primera columna
    lcd.print("LED encendido"); // Mostrar el mensaje en el LCD 16x2
  }else if(potValor < 1365){
    digitalWrite(ledPin, LOW);
    lcd.setCursor(0, 0);
    lcd.print("LED apagado");
  }
  ThingSpeak.setField(1, potValor);

  if (millis() - dataMillis > 20000)
  {
    int x = ThingSpeak.writeFields(SECRET_CH_ID, SECRET_WRITE_APIKEY);
    if(x == 200){
      Serial.println("Channel update successful.");
    }
    else {
      Serial.println("Problem updating channel. HTTP error code " + String(x));
    }  
  }
  delay(100);
}


NOCOMNCVCCGNDINLED1PWRRelay Module