// const char* ssid = "Adel cantik"; SSD Wifi
// const char* password = "mmuachhh"; Pasword
#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include <NewPing.h>
#include <vector>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
#define BOT_TOKEN "8113986347:AAG5OWLbujeug6M_S2VHvV4m_3XcdZS5GrY"
#define TRIG_PIN 32
#define ECHO_PIN 33
#define MAX_DISTANCE 200
NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE);
// PIN LED
#define LED_MERAH 4
#define LED_KUNING 18
#define LED_HIJAU 17
WiFiClientSecure client;
UniversalTelegramBot bot(BOT_TOKEN, client);
std::vector<String> daftarChatID;
bool statusParkir = false;
void setup() {
Serial.begin(115200);
pinMode(LED_MERAH, OUTPUT);
pinMode(LED_KUNING, OUTPUT);
pinMode(LED_HIJAU, OUTPUT);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi Terhubung");
client.setInsecure();
bot.sendMessage(daftarChatID.empty() ? "" : daftarChatID[0], "🚦 Sistem Parkir Aktif!", "");
}
void handleNewMessages(int numNewMessages) {
for (int i = 0; i < numNewMessages; i++) {
String chat_id = bot.messages[i].chat_id;
String text = bot.messages[i].text;
if (text == "/start") {
if (std::find(daftarChatID.begin(), daftarChatID.end(), chat_id) == daftarChatID.end()) {
daftarChatID.push_back(chat_id);
bot.sendMessage(chat_id, "🤖 Kamu berhasil berlangganan notifikasi parkir!", "");
}
}
}
}
void kirimKeSemua(String pesan) {
for (String id : daftarChatID) {
bot.sendMessage(id, pesan, "");
}
}
void loop() {
int jumlahPesan = bot.getUpdates(bot.last_message_received + 1);
if (jumlahPesan > 0) handleNewMessages(jumlahPesan);
int jarak = sonar.ping_cm();
Serial.print("Jarak: ");
Serial.println(jarak);
if (jarak > 0 && jarak <= 5) {
digitalWrite(LED_MERAH, HIGH);
digitalWrite(LED_KUNING, LOW);
digitalWrite(LED_HIJAU, LOW);
if (!statusParkir) {
kirimKeSemua("🚗 Tempat Parkir TERISI!");
statusParkir = true;
}
} else if (jarak > 5 && jarak <= 10) {
digitalWrite(LED_KUNING, HIGH);
digitalWrite(LED_MERAH, LOW);
digitalWrite(LED_HIJAU, LOW);
} else {
digitalWrite(LED_HIJAU, HIGH);
digitalWrite(LED_MERAH, LOW);
digitalWrite(LED_KUNING, LOW);
if (statusParkir) {
kirimKeSemua("✅ Tempat Parkir KOSONG.");
statusParkir = false;
}
}
delay(300); // Delay responsif
}