#define BLYNK_TEMPLATE_ID "TMPL6L_IZrTtN"
#define BLYNK_TEMPLATE_NAME "Presentation 03 Assignment"
#define BLYNK_AUTH_TOKEN "88YoD6E0Px5DjsGqT_n2UBsVZQNyeFtE"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#define BLYNK_PRINT Serial
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#include <DHT.h>
#define cb 33
const int DHTTYPE = DHT22;
DHT dht(cb, DHTTYPE);
float doC ;
float doam;
#define quat 22
bool quat_status = false;
unsigned long time_dht = 0;
void sendSensor()
{
doC = dht.readTemperature();
doam = dht.readHumidity();
if (isnan(doC) || isnan(doam)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
Serial.print("Temp: " + String(doC, 2) + "°C" + " ");
Blynk.virtualWrite(V0, doC);
Serial.println("Humi: " + String(doam, 1) + "%");
Blynk.virtualWrite(V1, doam);
if (doC > 30) {
// !quat_status = true => if(true) -> ok
if (!quat_status) {
digitalWrite(quat, HIGH); // Kích hoạt Relay
Blynk.virtualWrite(V2, HIGH); // Gửi trạng thái Relay lên V2 trên Blynk
quat_status = true;
}
}
else {
if (quat_status) {
digitalWrite(quat, LOW); // Tắt Relay
Blynk.virtualWrite(V2, LOW); // Gửi trạng thái Relay lên V2 trên Blynk
quat_status = false;
}
}
}
BLYNK_WRITE(V2){
int value = param.asInt(); // Get value from Blynk app (0 or 1)
if (value == 1) {
digitalWrite(quat, HIGH); // Kích hoạt Relay
quat_status = true;
} else {
digitalWrite(quat, LOW); // Tắt Relay
quat_status = false;
}
}
void setup() {
Blynk.begin(auth, ssid, pass);
Serial.begin(115200);
dht.begin();
pinMode(quat, OUTPUT);
digitalWrite(quat, LOW);
}
void loop() {
Blynk.run();
if (millis() - time_dht >= 1000) {
time_dht = millis();
sendSensor();
}
}