#define BLYNK_PRINT Serial
/* Fill in information from Blynk Device Info here */
#define BLYNK_TEMPLATE_ID "TMPL6DP2OsGMB"
#define BLYNK_TEMPLATE_NAME "Smart Farm"
#define BLYNK_AUTH_TOKEN "-phVQYygIIAyMIJCmuMJ0_XZC9g8n-iL"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
// Your WiFi credentials.
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
int automationState = 0; // 0 = OFF, 1 = ON
int pumpState = 0; // 0 = OFF, 1 = ON
int airHumidity = 0; // ตัวแปรเก็บค่าความชื้น
void sendSensorData()
{
float airHumidity = random(60, 80); // สมมติค่าความชื้นระหว่าง 30-80%
float temperature = random(24, 30); // สมมติค่าอุณหภูมิระหว่าง 20-35°C
Blynk.virtualWrite(V1, airHumidity);
Blynk.virtualWrite(V2, temperature);
Blynk.virtualWrite(V0, temOfDirt); // ส่งข้อมูลดิน (Tem of dirt) ที่ V0
Serial.print("Simulated Humidity: ");
Serial.print(airHumidity);
Serial.print("%, Simulated Temperature: ");
Serial.print(temperature);
Serial.println("°C");
Serial.print(temOfDirt);
Serial.println("°C");
// ตรวจสอบสถานะของ Automation และตั้งค่าปั๊ม
if (automationState == 1 && airHumidity <= 50) {
pumpState = 1; // เปิดปั๊ม
} else {
pumpState = 0; // ปิดปั๊มในกรณีอื่น ๆ
}
Blynk.virtualWrite(V4, pumpState); // อัพเดทสถานะปั๊ม
}
// ฟังก์ชันนี้จะถูกเรียกเมื่อมีการเปลี่ยนแปลงสถานะของ Automation
BLYNK_WRITE(V3)
{
automationState = param.asInt(); // รับค่าจาก Blynk
}
BLYNK_WRITE(V4)
{
if (automationState == 0) {
pumpState = param.asInt(); // รับค่าจาก Blynk และตั้งค่า pumpState
}
}
void setup()
{
Serial.begin(115200);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
timer.setInterval(2000L, sendSensorData);
}
void loop()
{
Blynk.run();
timer.run();
}