#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include <ArduinoJson.h>
// Initialize the LCD
LiquidCrystal_I2C lcd(0x27, 16, 2);
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* botToken = "6805490177:AAF--H_Oxpq2Mm3B-e5qVKpmjwgTvEQb7Bw";
const char* chatID = "2061141342";
const int pirPin = 12;
const int buzzerPin = 2;
const int ledPin = 12;
WiFiClientSecure secured_client;
UniversalTelegramBot bot(botToken, secured_client);
int motionCount = 0;
void setup() {
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
pinMode(pirPin, INPUT);
pinMode(buzzerPin, OUTPUT);
digitalWrite(buzzerPin, LOW);
// Initialize LCD
lcd.begin(16, 2);
lcd.init();
lcd.backlight();
WiFi.begin(ssid, password);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Connecting to");
lcd.setCursor(0, 1);
lcd.print("WiFi...");
while (WiFi.status() != WL_CONNECTED) {
delay(250);
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("WiFi connected");
lcd.setCursor(0, 1);
lcd.print(ssid);
delay(2000);
configTime(25200, 0, "pool.ntp.org", "time.nist.gov");
secured_client.setInsecure();
}
void loop() {
int pirStatus = digitalRead(pirPin);
if (pirStatus == HIGH) {
digitalWrite(ledPin, HIGH);
tone(buzzerPin, 1000);
delay(1000);
noTone(buzzerPin);
motionCount++;
String message = "MAS ROSYID ADA PERGERAKKAN DI RUANGAN!!! " + getLocalTimeAsString();
bot.sendMessage(chatID, message, "");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("WiFi connected");
lcd.setCursor(0, 1);
lcd.print("Motions: ");
lcd.print(motionCount);
delay(10000);
}
digitalWrite(ledPin, LOW);
delay(500);
}
String getLocalTimeAsString() {
struct tm timeinfo;
if (!getLocalTime(&timeinfo)) {
return "Gagal mendapatkan waktu.";
}
char buffer[30];
strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", &timeinfo);
return String(buffer);
}