#include <ESP8266WiFi.h>
#include <Servo.h>
#include <WiFiClient.h>
#include <ESP8266HTTPClient.h>
const char* ssid = "YOUR_SSID"; // Ganti dengan SSID Wi-Fi Anda
const char* password = "YOUR_PASSWORD"; // Ganti dengan password Wi-Fi Anda
const String botToken = "YOUR_BOT_TOKEN"; // Ganti dengan token bot Telegram Anda
const String chatID = "YOUR_CHAT_ID"; // Ganti dengan ID chat Telegram Anda
const int mq135Pin = A0; // Pin sensor MQ-135
const int flamePin = A1; // Pin sensor api
const int servoPin = D2; // Pin servo
const int buzzerPin = D3; // Pin Buzzer
Servo myServo; // Buat objek servo
bool isAlarmActive = false; // Status alarm
void setup() {
Serial.begin(115200);
myServo.attach(servoPin);
myServo.write(0); // Posisi awal servo
pinMode(buzzerPin, OUTPUT); // Set pin buzzer sebagai output
// Koneksi Wi-Fi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Connected to Wi-Fi");
}
void loop() {
int mq135Value = analogRead(mq135Pin); // Membaca nilai MQ-135
int flameValue = analogRead(flamePin); // Membaca nilai sensor api
Serial.print("MQ-135 Value: ");
Serial.print(mq135Value);
Serial.print(" | Flame Value: ");
Serial.println(flameValue);
// Deteksi gas
if (mq135Value > 400 || flameValue < 300) { // Sesuaikan threshold sesuai kebutuhan
if (!isAlarmActive) { // Cek jika alarm belum aktif
Serial.println("Gas or Fire Detected!");
sendNotification("PERHATIAN!!!! ADA KEBOCORAN GAS DIRUMAH");
activateAlarm();
isAlarmActive = true; // Set alarm aktif
}
} else if (isAlarmActive) { // Reset alarm jika tidak ada deteksi
sendNotification("OKEE AMAN!!! REGULATOR SUDAH TERLEPAS, ALIRAN GAS SUDAH TERPUTUS");
isAlarmActive = false; // Reset status alarm
}
delay(1000); // Delay 1 detik sebelum membaca lagi
}
void sendNotification(String message) {
if (WiFi.status() == WL_CONNECTED) {
WiFiClient client; // Buat objek WiFiClient
HTTPClient http;
String url = "https://api.telegram.org/bot" + botToken + "/sendMessage?chat_id=" + chatID + "&text=" + message;
http.begin(client, url); // Menggunakan client dan URL
int httpResponseCode = http.GET();
if (httpResponseCode > 0) {
String response = http.getString();
Serial.println(httpResponseCode);
Serial.println(response);
} else {
Serial.print("Error on sending GET: ");
Serial.println(httpResponseCode);
}
http.end();
} else {
Serial.println("WiFi not connected");
}
}
void activateAlarm() {
myServo.write(90); // Ubah posisi servo untuk memutuskan aliran gas
for (int i = 0; i < 5; i++) { // Buzzer berbunyi 5 kali
digitalWrite(buzzerPin, HIGH);
delay(200); // Durasi buzzer menyala
digitalWrite(buzzerPin, LOW);
delay(200); // Durasi buzzer mati
}
myServo.write(0); // Kembali ke posisi awal servo
}