#include <WiFi.h>
#include <WebServer.h>
#include "DHTesp.h"
#define GAS_PIN 34 // MQ-2 analog
#define DHT_PIN 15
#define LED_RED 26
#define LED_GREEN 27
const char* ssid = "Wokwi-GUEST";
const char* password = "";
WebServer server(80);
DHTesp dht;
float gasValue;
float temperature;
void handleRoot() {
String page = "<!DOCTYPE html><html><head>";
page += "<meta name='viewport' content='width=device-width, initial-scale=1'>";
page += "<style>";
page += "body{font-family:Arial;text-align:center;}";
page += ".safe{color:green;font-size:24px;}";
page += ".danger{color:red;font-size:24px;}";
page += "</style></head><body>";
page += "<h2>Engine Room Safety Monitor</h2>";
page += "<p>Gas Level: " + String(gasValue) + "</p>";
page += "<p>Temperature: " + String(temperature) + " °C</p>";
if (gasValue > 300 || temperature >= 40) {
page += "<p class='danger'>⚠️ DANGER – DO NOT RUN ENGINE</p>";
} else {
page += "<p class='safe'>✅ SAFE – ENGINE OK</p>";
}
page += "<meta http-equiv='refresh' content='2'>";
page += "</body></html>";
server.send(200, "text/html", page);
}
void setup() {
Serial.begin(115200);
pinMode(LED_RED, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
dht.setup(DHT_PIN, DHTesp::DHT22);
WiFi.begin(ssid, password);
Serial.print("Connecting");
while (WiFi.status() != WL_CONNECTED) {
delay(300);
Serial.print(".");
Serial.println("Open http://10.10.0.2 in Wokwi Web View");
}
Serial.println("\nConnected!");
Serial.print("IP: ");
Serial.println(WiFi.localIP());
server.on("/", handleRoot);
server.begin();
}
void loop() {
gasValue = analogRead(GAS_PIN);
temperature = dht.getTemperature();
if (gasValue > 300 || temperature >= 40) {
digitalWrite(LED_RED, HIGH);
digitalWrite(LED_GREEN, LOW);
} else {
digitalWrite(LED_RED, LOW);
digitalWrite(LED_GREEN, HIGH);
}
server.handleClient();
delay(500);
}