#include <WiFi.h>
#include <RTClib.h>
#include <DHTesp.h>
#include <Servo.h>
#include "WiFi.h"
// Servo object
Servo myservo;
int pos = 0;
// DHT sensor pin and object
const int DHT_PIN = 15;
DHTesp dhtSensor;
// RTC object
RTC_DS1307 rtc;
// Define filter value
int filter_value = 5;
int cooling_threshold = 50;
int alert_threshold = 70;
//Defining LED pins
const int ledpin1 = 3;
const int ledpin2 = 13;
#define WIFI_NETWORK "Wokwi-GUEST"
WiFiClient client; //WiFi instance
// Function to read temperature
float readTemperature()
{
TempAndHumidity data;
data = dhtSensor.getTempAndHumidity();
return data.temperature;
}
//Function to connect to the WiFi
void connectToWifi()
{
Serial1.print("Connecting To Wifi");
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_NETWORK);
while(WiFi.status() != WL_CONNECTED)
{
Serial1.print("./");
delay(100);
}
if(WiFi.status() !=WL_CONNECTED)
{
Serial1.print("Failed");
}
else
{
Serial1.print("Connected");
Serial1.print(WiFi.localIP());
}
}
//Function to perform air conditioning
void hvac()
{
float Temp = readTemperature();
if (Temp < cooling_threshold)
{
Serial.print("Server Room Temperature is Stable!!");
if (ledpin2 == HIGH)
{
digitalWrite(ledpin2, LOW);
}
delay(2000);
}
if (Temp >= cooling_threshold && Temp < alert_threshold)
{
Serial.print("Server Room Temperature is Rising\nCooling System is activated");
digitalWrite(ledpin2, HIGH);
for(pos = 0;pos <=360; pos+=1)
{
myservo.write(pos);
delay(15);
}
delay(2000);
}
if (Temp >= alert_threshold)
{
if (ledpin2 == HIGH)
{
digitalWrite(ledpin2, LOW);
}
Serial.print("Fire Alarm is Triggered");
digitalWrite(ledpin1, HIGH);
}
}
void setup() {
// Initialize serial communication
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
myservo.attach(28);
connectToWifi();
// Initialize RTC
if (!rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1); // Halt program execution on error
}
if (!rtc.isrunning()) {
Serial.println("RTC is NOT running, let's set the time!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // Set RTC to compile time
}
}
void loop() {
DateTime now = rtc.now();
hvac();
}