#define WOKWI // Định nghĩa trước khi include thư viện ERa
#include <WiFi.h>
#include <DHT.h>
#include <driver/ledc.h> // Phải có dòng này!
#include <ERa.hpp>
#include <ERaSimpleEsp32.hpp>
#define DHTPIN 4
#define DHTTYPE DHT22
#define MQ2PIN 36
#define FLAME_PIN 18
#define LED_PIN 27
#define V0 0
#define V1 1
#define V2 2
#define V3 3
#define V4 4 // led_control
#define V5 5 // ledState
DHT dht(DHTPIN, DHTTYPE);
bool ledStatus = false;
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
pinMode(FLAME_PIN, INPUT);
dht.begin();
ERa.begin();
#ifndef WOKWI
ERa.onWrite(V4, [](ERaData data) {
ledStatus = data.toBool();
digitalWrite(LED_PIN, ledStatus);
ERa.virtualWrite(V5, ledStatus);
});
#endif
}
void loop() {
ERa.run();
float temp = dht.readTemperature();
float hum = dht.readHumidity();
int gas = analogRead(MQ2PIN);
int flame = digitalRead(FLAME_PIN);
ERa.virtualWrite(V0, temp);
ERa.virtualWrite(V1, hum);
ERa.virtualWrite(V2, gas);
ERa.virtualWrite(V3, flame == LOW ? 1 : 0);
if (temp > 60 || gas > 1200 || flame == LOW) {
digitalWrite(LED_PIN, HIGH);
ERa.virtualWrite(V5, true);
} else {
digitalWrite(LED_PIN, ledStatus);
ERa.virtualWrite(V5, ledStatus);
}
delay(2000);
}