#include <WiFi.h>
#include "ThingSpeak.h" // always include thingspeak header file after other header files and custom macros
#include <DHT.h>
#include <ESP32Servo.h>
#define WIFI_SSID "Wokwi-GUEST" // replace MySSID with your WiFi network name
#define WIFI_PASSWORD "" // replace MyPassword with your WiFi password
#define SECRET_CH_ID 2345721 // replace 0000000 with your channel number
#define SECRET_WRITE_APIKEY "1T6RAWURR0KJRX5M" // replace XYZ with your channel write API Key
#define MQ2_A 35 // define MQ2 analog pin
#define BUT 25
#define buz 33
DHT dht(26, DHT22);
const int servoPin = 14;
float temperature ;
float humidity;
WiFiClient client;
Servo servo;
unsigned long myChannelNumber = SECRET_CH_ID;
const char * myWriteAPIKey = SECRET_WRITE_APIKEY;
int A_value;
unsigned long dataMillis = 0;
int k, m;
void setup() {
Serial.begin(115200); //Initialize serial
servo.attach(servoPin, 500, 2400);
pinMode(MQ2_A, INPUT);
pinMode(BUT, INPUT_PULLUP);
pinMode(buz, OUTPUT);
digitalWrite(buz, LOW);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
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
}
void loop() {
A_value = analogRead(MQ2_A);
k = analogRead(MQ2_A);
temperature = dht.readTemperature();
humidity = dht.readHumidity();
ThingSpeak.setField(1, temperature);
ThingSpeak.setField(2, humidity);
if (millis() - dataMillis > 20000)
{
int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
if(x == 200){
Serial.println("Channel update successful.");
}
else {
Serial.println("Problem updating channel. HTTP error code " + String(x));
}
}
int value = digitalRead((BUT));
if(temperature<60){
digitalWrite(buz, LOW);
servo.write(90);
delay(200);
}else{
digitalWrite(buz, HIGH);
servo.write(180);
delay(200);
}
}