#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include "DHT.h"
// WiFi bilgileri
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
// Telegram BOT bilgileri
#define BOT_TOKEN "7685692805:AAFp2s6oqgQ49LTtm4NxjnS6zxdBrn5rSdI"
#define CHAT_ID "6691037752"
WiFiClientSecure secured_client;
UniversalTelegramBot bot(BOT_TOKEN, secured_client);
unsigned long bot_lasttime;
// DHT22 sensör ayarları
#define DHTPIN 12
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Sensör verilerini okuma
String getReadings(){
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
String message = "Sıcaklık: " + String(temperature) + " °C\n";
message += "Nem: " + String(humidity) + " %\n";
return message;
}
// Telegram mesajlarını işleme
void handleNewMessages(int numNewMessages) {
for (int i=0; i<numNewMessages; i++) {
String chat_id = String(bot.messages[i].chat_id);
if (chat_id != CHAT_ID) {
bot.sendMessage(chat_id, "Yetkisiz kullanıcı!", "");
continue;
}
String text = bot.messages[i].text;
String from_name = bot.messages[i].from_name;
if (text == "/start") {
String welcome = "Hoş geldin, " + from_name + ".\n";
welcome += "Aşağıdaki komutları kullanabilirsin:\n\n";
welcome += "/oku : Anlık sıcaklık ve nem değerlerini gösterir.\n";
bot.sendMessage(chat_id, welcome, "");
}
if (text == "/oku") {
String readings = getReadings();
bot.sendMessage(chat_id, readings, "");
}
}
}
// Başlangıç ayarları
void setup() {
Serial.begin(115200);
dht.begin();
Serial.print("WiFi ağına bağlanılıyor: ");
Serial.println(WIFI_SSID);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
secured_client.setInsecure(); // Sertifika doğrulamasını kapat
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("\nWiFi bağlandı!");
Serial.print("IP adresi: ");
Serial.println(WiFi.localIP());
}
// Ana döngü
void loop() {
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
if (isnan(temperature) || isnan(humidity)) {
Serial.println("DHT sensöründen veri okunamadı!");
return;
}
Serial.print("Nem: ");
Serial.print(humidity);
Serial.print("% Sıcaklık: ");
Serial.print(temperature);
Serial.println("°C");
if (temperature >= 60) {
String uyarı = "⚠️ Dikkat! Sıcaklık 60°C üzerine çıktı!";
bot.sendMessage(CHAT_ID, uyarı, "");
}
if (millis() - bot_lasttime > 1000) {
int numNewMessages = bot.getUpdates(bot.last_message_received + 1);
while (numNewMessages) {
handleNewMessages(numNewMessages);
numNewMessages = bot.getUpdates(bot.last_message_received + 1);
}
bot_lasttime = millis();
}
delay(1000);
}