#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include <ArduinoJson.h>
#include <HTTPClient.h>
// Konfigurasi WiFi
const char ssid[] = "Wokwi-GUEST";
const char pass[] = "";
// Alamat website yang dimonitoring
const char* websiteURL = "https://site.undipa.ac.id/";
// Initialize Telegram BOT
#define BOTtoken "1814579181:AAGUasYhK6z43R9XWL3exoEzdA2CXyAsA3g"
#define CHAT_ID "1209015823"
WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);
// Variabel waktu untuk pengganti delay
unsigned long previousMillis = 0;
const long interval = 10000; // Interval pemeriksaan 10 detik
void setup() {
Serial.begin(115200);
Serial.println("Memulai koneksi WiFi...");
Serial.println("Mencari WiFi:");
Serial.println(ssid);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, pass);
client.setCACert(TELEGRAM_CERTIFICATE_ROOT); // Sertifikat root Telegram
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("\nWiFi terhubung!");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
bot.sendMessage(CHAT_ID, "Memulai Sistem", "");
}
void loop() {
if (WiFi.status() != WL_CONNECTED) {
Serial.println("Koneksi WiFi terputus. Mencoba menyambung ulang...");
WiFi.disconnect();
WiFi.reconnect();
delay(5000);
return; // Tunggu koneksi sebelum melanjutkan
}
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
cekWeb();
}
}
void cekWeb() {
HTTPClient http; // Membuat objek HTTPClient
http.begin(websiteURL); // Inisialisasi request ke URL website
int httpResponseCode = http.GET(); // Kirim HTTP GET request
if (httpResponseCode > 0) {
if (httpResponseCode >= 200 && httpResponseCode < 300) {
// Status 2xx: Sukses
Serial.println("Website CONNECT (Status: " + String(httpResponseCode) + " - OK)");
bot.sendMessage(CHAT_ID, "Website CONNECT. Status: " + String(httpResponseCode) + " - OK");
} else if (httpResponseCode >= 400 && httpResponseCode < 500) {
// Status 4xx: Client Error
Serial.println("Website ERROR (Status: " + String(httpResponseCode) + " - Client Error)");
bot.sendMessage(CHAT_ID, "Website ERROR. Status: " + String(httpResponseCode) + " - Client Error. Periksa URL atau permintaan HTTP.");
} else if (httpResponseCode >= 500 && httpResponseCode < 600) {
// Status 5xx: Server Error
Serial.println("Website ERROR (Status: " + String(httpResponseCode) + " - Server Error)");
bot.sendMessage(CHAT_ID, "Website ERROR. Status: " + String(httpResponseCode) + " - Server Error. Masalah ada pada server.");
} else {
// Status lain-lain (non-standar)
Serial.println("Website Status Tidak Dikenal (Status: " + String(httpResponseCode) + ")");
bot.sendMessage(CHAT_ID, "Website Status Tidak Dikenal. Status: " + String(httpResponseCode));
}
} else {
// Jika HTTP GET gagal
Serial.println("Website DISCONNECT (Tidak dapat menghubungi server)");
bot.sendMessage(CHAT_ID, "Website DISCONNECT. Tidak dapat menghubungi server. Periksa koneksi atau status website.");
}
http.end(); // Hentikan koneksi HTTP
}