#include <WiFi.h>
#include <LiquidCrystal_I2C.h>
#include <ThingSpeak.h> // always include thingspeak header file after other header files and custom macros
#include "DHTesp.h"
#include <Wire.h>
const int DHT_PIN = 15;
DHTesp dhtSensor;
int warmLed = 12;
int normalLed=13;
int coldLed=14;
LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 16, 2);
const char * ssid= "Wokwi-GUEST";
const char * pass = "";
WiFiClient client;
unsigned long myChannelNumber = 1972572;
const char * myWriteAPIKey = "E3YMHYRQCA2AGHEK";
const char * server="api.thingspeak.com";
long lastTime=0;
long timerDelay=30000;
int temperature;
int humidity;
int temppin=32;
float pinval;
float temp=0.00;
void setup()
{
//pinMode(temppin,INPUT);
Serial.begin(115200); //Initialize serial
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
dhtSensor.getPin();
delay(10);
WiFi.begin(ssid,pass);
while(WiFi.status() != WL_CONNECTED){
delay(100);
Serial.println("Wifi Connected") ;
Serial.println(WiFi.localIP());
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client); // Initialize ThingSpeak
}
pinMode(warmLed, OUTPUT);
pinMode(coldLed, OUTPUT);
pinMode(normalLed, OUTPUT);
}
void loop()
{
// Connect or reconnect to WiFi
if(WiFi.status() != WL_CONNECTED)
{
Serial.print("Attempting to connect to SSID: ");
Serial.println(ssid);
while(WiFi.status() != WL_CONNECTED)
{
WiFi.begin(ssid, pass); // Connect to WPA/WPA2 network. Change this line if using open or WEP network
Serial.print(".");
delay(5000);
}
Serial.println("\nConnected.");
}
temperature=dhtSensor.getTemperature();
Serial.println("Temperature: " + String(temperature) + "°C");
humidity=dhtSensor.getHumidity();
Serial.println("Humidity: " + String(humidity) + "%");
if(temperature>41){
digitalWrite(warmLed, HIGH);
}else if(((temperature)<40)&&((temperature)>15)){
digitalWrite(normalLed, HIGH);
}else{
digitalWrite(coldLed, HIGH);
}
LCD.init();
LCD.backlight();
LCD.setCursor(0, 0);
LCD.print("Temperature: " + String(temperature) + "°C");
LCD.setCursor(0, 1);
LCD.print("Humidity: " + String(humidity) + "%");
ThingSpeak.setField(1,temperature);
ThingSpeak.setField(2,humidity);
// Write to ThingSpeak. There are up to 8 fields in a channel, allowing you to store up to 8 different
// pieces of information in a channel. Here, we write to field 1.
int x = ThingSpeak.writeFields(myChannelNumber,myWriteAPIKey);
if(x == 200)
{
Serial.println("Channel update successful.");
}
delay(1000); // Wait 7 seconds to update the channel again
}