#define BLYNK_TEMPLATE_ID "TMPL3LJ4dfKmk"
#define BLYNK_TEMPLATE_NAME "Temperature Sensor"
#define BLYNK_AUTH_TOKEN "5UU61mGz1levQiAmZJ4T9C8LHL-2UEPo"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <DHTesp.h> // Library for DHT sensor
char auth[] = BLYNK_AUTH_TOKEN; // Auth Token
char ssid[] = "Wokwi-GUEST"; // Your WiFi SSID
char pass[] = ""; // Your WiFi password
const int DHT_PIN = 15; // Pin for DHT22 sensor
int value0, value1, value2, value3, value6;
byte LED_R = 26;
byte LED_Y = 27;
byte LED_G = 14;
byte LED_B = 12;
DHTesp dht;
BlynkTimer timer;
float simulatedTemperature = 25.0; // Starting temperature
float temperatureChange = 5.0; // How much temperature fluctuates
float simulatedHumidity = 50.0; // Starting humidity
float humidityChange = 20.0; // How much humidity fluctuates
// Function to send simulated temperature and humidity data to Blynk
void sendSensor() {
// Simulate fluctuating temperature (using a sine wave)
unsigned long currentMillis = millis();
simulatedTemperature = 25.0 + temperatureChange * sin(currentMillis / 1000.0); // Fluctuating temperature
// Simulate fluctuating humidity (using a sine wave)
simulatedHumidity = 50.0 + humidityChange * sin(currentMillis / 1000.0); // Fluctuating humidity
// Print simulated values to Serial Monitor
Serial.print("Simulated Temperature: ");
Serial.print(simulatedTemperature);
Serial.println(" °C");
Serial.print("Simulated Humidity: ");
Serial.print(simulatedHumidity);
Serial.println(" %");
// Send temperature and humidity data to Blynk
Blynk.virtualWrite(V4, simulatedTemperature); // Send simulated temperature to Blynk
Blynk.virtualWrite(V5, simulatedHumidity); // Send simulated humidity to Blynk
}
BLYNK_WRITE(V0) {
value0 = param.asInt();
digitalWrite(LED_R, value0);
Blynk.virtualWrite(V7, value0);
cekAllLed();
}
BLYNK_WRITE(V1) {
value1 = param.asInt();
digitalWrite(LED_Y, value1);
Blynk.virtualWrite(V8, value1);
cekAllLed();
}
BLYNK_WRITE(V2) {
value2 = param.asInt();
digitalWrite(LED_G, value2);
Blynk.virtualWrite(V9, value2);
cekAllLed();
}
BLYNK_WRITE(V3) {
value3 = param.asInt();
digitalWrite(LED_B, value3);
Blynk.virtualWrite(V10, value3);
cekAllLed();
}
BLYNK_WRITE(V6) {
value6 = param.asInt();
digitalWrite(LED_R, value6);
Blynk.virtualWrite(V7, value6);
Blynk.virtualWrite(V0, value6);
digitalWrite(LED_Y, value6);
Blynk.virtualWrite(V8, value6);
Blynk.virtualWrite(V1, value6);
digitalWrite(LED_G, value6);
Blynk.virtualWrite(V9, value6);
Blynk.virtualWrite(V2, value6);
digitalWrite(LED_B, value6);
Blynk.virtualWrite(V10, value6);
Blynk.virtualWrite(V3, value6);
}
void cekAllLed() {
if (value0 == 1 && value1 == 1 && value2 == 1 && value3 == 1) {
Blynk.virtualWrite(V6, 1);
} else {
Blynk.virtualWrite(V6, 0);
}
}
void setup() {
// Debug console
Serial.begin(115200); // Set baud rate to 115200
pinMode(LED_R, OUTPUT);
pinMode(LED_Y, OUTPUT);
pinMode(LED_G, OUTPUT);
pinMode(LED_B, OUTPUT);
Blynk.begin(auth, ssid, pass); // Start Blynk
timer.setInterval(1000, sendSensor); // Set interval to send data every 1000ms (1 second)
}
void loop() {
Blynk.run(); // Run Blynk
timer.run(); // Run timer
}