#include #include #include #include // LED ve reedswitch için GPIO'ları ayarlayın const int reedSwitch = 4; const int led = 2; //optional // Role durumu değiştiğinde algılar bool changeState = false; // Reedswitch durumunu tutar (1=açık, 0=kapalı) bool state; String roleState; // Yardımcı değişkenler (yalnızca 1500 milisaniye aralıktaki değişiklikleri algılar) unsigned long previousMillis = 0; const long interval = 1500; const char* ssid = "xxxxxxxxx"; const char* password = "xxxxxxxxx"; #define BOTtoken "xxxxxx-xxxxx" // Bot Simgeniz (Botfather'dan alın) #define CHAT_ID "xxxxxxx" X509List cert(TELEGRAM_CERTIFICATE_ROOT); WiFiClientSecure client; UniversalTelegramBot bot(BOTtoken, client); // Reedswitch durumu değiştirdiğinde çalışır ICACHE_RAM_ATTR void changeRoleStatus() { Serial.println("State changed"); changeState = true; } void setup() { // Hata ayıklama amacıyla seri bağlantı noktası Serial.begin(115200); configTime(0, 0, "pool.ntp.org"); // UTC saatini NTP aracılığıyla alın client.setTrustAnchors(&cert); // api.telegram.org için kök sertifika ekleyin // Mevcut röle durumu oku pinMode(reedSwitch, INPUT_PULLUP); state = digitalRead(reedSwitch); // LED durumunu role durumuna uyacak şekilde ayarlayın pinMode(led, OUTPUT); digitalWrite(led, state); // Reedswitch pinini interrupt olarak ayarlayın, interrupt fonksiyonunu atayın ve CHANGE modunu ayarlayın attachInterrupt(digitalPinToInterrupt(reedSwitch), changeRoleStatus, CHANGE); // Wi-Fi'ye bağlanın WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); bot.sendMessage(CHAT_ID, "Mirot-Ges001 Şuan Bağlantı Kuruldu", ""); } void loop() { if (changeState){ unsigned long currentMillis = millis(); if(currentMillis - previousMillis >= interval) { previousMillis = currentMillis; // Bir durum oluşmuşsa, mevcut role durumunu ters çevirin state = !state; if(state) { roleState = "Kapalı"; } else{ roleState = "Açık"; } digitalWrite(led, state); changeState = false; Serial.println(state); Serial.println(roleState); // bildirim gönder bot.sendMessage(CHAT_ID, "Enerji Durumu " + roleState, ""); } } }