#define BLYNK_TEMPLATE_ID "TMPL6ai9Nv2yD"
#define BLYNK_TEMPLATE_NAME "TPIOT9AkmalRabbani2106731610"
#define BLYNK_AUTH_TOKEN "5WiHLWXbGw05gDRxQDDQKhccdCdwKnEZ"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char auth[] = "5WiHLWXbGw05gDRxQDDQKhccdCdwKnEZ"; // Blynk authentication token
char ssid[] = "Wokwi-GUEST"; // WiFi network name
char pass[] = ""; // WiFi network password
int acStatus = 0; // Variable to store AC status (0 for OFF, 1 for ON)
int temperature = 20; // Initial temperature setting
int fanSpeed = 1; // Initial fan speed setting
BlynkTimer timer;
const int fanPin = 13; // GPIO pin for fan simulation
const int temperaturePin = 12; // GPIO pin for temperature simulation
const int myLED = 2; // Define a different name for LED pin
void setup()
{
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
pinMode(fanPin, OUTPUT);
pinMode(temperaturePin, OUTPUT);
pinMode(myLED, OUTPUT); // Set myLED pin as an output
timer.setInterval(1000L, sendSensor);
}
void loop()
{
Blynk.run();
timer.run();
}
BLYNK_WRITE(V1) // Button to toggle AC ON/OFF
{
acStatus = param.asInt();
if (acStatus == 1)
{
// Simulate turning on the AC
digitalWrite(fanPin, HIGH);
digitalWrite(myLED, HIGH); // Turn on myLED when AC is ON
}
else
{
// Simulate turning off the AC
digitalWrite(fanPin, LOW);
digitalWrite(myLED, LOW); // Turn off myLED when AC is OFF
}
// Display received data from Blynk on Serial Monitor
Serial.print("AC Status: ");
Serial.println(acStatus);
}
BLYNK_WRITE(V2) // Slider for temperature adjustment
{
temperature = param.asInt();
// Simulate adjusting the AC temperature
int blinkSpeed = map(temperature, 18, 30, 500, 1000); // Map temperature range to blink speed
analogWrite(temperaturePin, 128); // Low fan speed
delay(blinkSpeed); // Adjust delay based on temperature
analogWrite(temperaturePin, 255); // High fan speed
delay(blinkSpeed); // Adjust delay based on temperature
// Display received data from Blynk on Serial Monitor
Serial.print("Temperature: ");
Serial.println(temperature);
}
BLYNK_WRITE(V3) // Slider for fan speed adjustment
{
fanSpeed = param.asInt();
// Simulate adjusting the AC fan speed
int fanSpeedDelay = map(fanSpeed, 1, 5, 1000, 200); // Map fanSpeed to delay
delay(fanSpeedDelay);
// Display received data from Blynk on Serial Monitor
Serial.print("Fan Speed: ");
Serial.println(fanSpeed);
}
void sendSensor()
{
// Combine temperature and fan speed into a single string
String displayString = "Temp: " + String(temperature) + "°C, Speed: " + String(fanSpeed);
// Display combined values in a single widget (String datastream)
Blynk.virtualWrite(V4, displayString);
// Display AC status (On/Off) in another widget
if (acStatus == 1) {
Blynk.virtualWrite(V0, "ON");
} else {
Blynk.virtualWrite(V0, "OFF");
}
// Display received data from Blynk on Serial Monitor
Serial.print("Received Data: AC Status=");
Serial.print(acStatus);
Serial.print(", Temperature=");
Serial.print(temperature);
Serial.print(", Fan Speed=");
Serial.println(fanSpeed);
}