Selamlar THT Ailesi. Bugün sizlerle, evinizi nasıl akıllı hale getirebilirsiniz, uzaktan nasıl kontrol edebilirsiniz meselesine değineceğiz.
Şimdiden İyi Okumalar.
Önceki konularımızdaki gibi projemiz hakkında güzel bir fotoğraf bırakıyorum buraya. Bunun üzerinden ilerleyeceğiz.
Benim yapacağım projenin amacı kısaca şu şekilde olacaktır. Telegram üzerinden oluşturmuş olduğum bota mesaj gönderince evinizdeki herhangi bir teknolojik aleti açmasını
veya bir ışığı açıp kapatmasını sağlayabilirsiniz.
Öncelikle botumuzu nasıl oluşturucaz burayı size anlatim.
Botfather telegramın kendi içerisinde olan bot oluştumamızı sağlar. Arama yerine botfather yazıp kendi botunuzu istediğiniz biçimde oluşturabilirsiniz.
/newbot komutu ile yeni bir bot oluşturmak istediğinizi belirtiyorsunuz.
Bundan sonra botun adını ne yapacağınızı yazıyorsunuz.
Burada botunuzun Tokenini size veriyor. Bu kodu saklayın ilerde bu Tokeni kullanacağız.
Şimdi Kullanacağımız bot ise IDbot.
Bu bot sayesinden kendi telegram ID'mızı öğrenmiş oluyoruz.
Peki neden kendi telegram adresimizin ID'sini kullanmak istiyoruz?
Bir nevi güvenlik önlemi almak istiyoruz. Buradaki ID sayesinde yazacağımız kodda sadece kendi hesabımızdan gelen mesajları algılamasını sağlayacağız.
Şimdi kodlamamıza geçmeden önce ESP32 kartımızda hangi pinout çıkışını kullanacağız onlardan bahsedelim.
Kısa bir not vereyim:
Esp32 cihazınızın 5V girişine 5v verip gnd pinini de - olan bacağa bağlarsanız harici bir güç kaynağına esp32 cihazınızı kablosuz bir şekilde enerji vermiş olacaksınız.
Ayrıca kodu esp cihazınıza attıktan sonra boot tuşuna basılı tutmanız lazım
Şimdi de kodlarımızı açıklayarak inceleyelim.
Şimdiden İyi Okumalar.
Önceki konularımızdaki gibi projemiz hakkında güzel bir fotoğraf bırakıyorum buraya. Bunun üzerinden ilerleyeceğiz.
Benim yapacağım projenin amacı kısaca şu şekilde olacaktır. Telegram üzerinden oluşturmuş olduğum bota mesaj gönderince evinizdeki herhangi bir teknolojik aleti açmasını
veya bir ışığı açıp kapatmasını sağlayabilirsiniz.
Öncelikle botumuzu nasıl oluşturucaz burayı size anlatim.
Botfather telegramın kendi içerisinde olan bot oluştumamızı sağlar. Arama yerine botfather yazıp kendi botunuzu istediğiniz biçimde oluşturabilirsiniz.
/newbot komutu ile yeni bir bot oluşturmak istediğinizi belirtiyorsunuz.
Bundan sonra botun adını ne yapacağınızı yazıyorsunuz.
Burada botunuzun Tokenini size veriyor. Bu kodu saklayın ilerde bu Tokeni kullanacağız.
Şimdi Kullanacağımız bot ise IDbot.
Bu bot sayesinden kendi telegram ID'mızı öğrenmiş oluyoruz.
Peki neden kendi telegram adresimizin ID'sini kullanmak istiyoruz?
Bir nevi güvenlik önlemi almak istiyoruz. Buradaki ID sayesinde yazacağımız kodda sadece kendi hesabımızdan gelen mesajları algılamasını sağlayacağız.
Şimdi kodlamamıza geçmeden önce ESP32 kartımızda hangi pinout çıkışını kullanacağız onlardan bahsedelim.
Kısa bir not vereyim:
Esp32 cihazınızın 5V girişine 5v verip gnd pinini de - olan bacağa bağlarsanız harici bir güç kaynağına esp32 cihazınızı kablosuz bir şekilde enerji vermiş olacaksınız.
Ayrıca kodu esp cihazınıza attıktan sonra boot tuşuna basılı tutmanız lazım
Şimdi de kodlarımızı açıklayarak inceleyelim.
Kod:
#include <WiFi.h>[/FONT][/CENTER]
[FONT=times new roman][CENTER]#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include <ArduinoJson.h>
const char* ssid = "*******"; //BURADA KENDİ WİFİ İSMİNİZİ YAZIYORSUNUZ
const char* password = "******"; //BURADA WİFİ ŞİFRENİZİ YAZIYORSUNUZ
// inisialisasi Bot Token
#define BOTtoken "*********" // BotFather'ın bize vermiş olduğu Token'ı buraya giriyoruz.
// İD bottan almış olduğumuz id değerini de alt taraftaki satıra ekliyoruz.
#define CHAT_ID "889205431"
WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);
int botRequestDelay = 1000;
unsigned long lastTimeBotRan;
const int Pinled1 = 32; //Burada ledlerinizi bağlayacağınız pinleri seçiyoruz.
bool Statusled1 = LOW;
const int Pinled2 = 33; // Ben 32,33 ve 5. pinleri kullandım. Siz de aynı şekilde yapabilirsiniz.
bool Statusled2 = LOW;
const int Pinled3 = 5;
bool Statusled3 = LOW;
void handleNewMessages(int numNewMessages) {
Serial.println("handleNewMessages");
Serial.println(String(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, "Unauthorized user", "");
continue;
}
String text = bot.messages[i].text;
Serial.println(text);
String from_name = bot.messages[i].from_name;
if (text == "/start") { //Start komutunu yazınca botumuz aktif olucak ve bize paremetleri gösterecek
String control = "Hoşgeldin, " + from_name + ".\n";
control += "Komutlar Aşağı Verilmiştir.\n\n";
control += "/led1kapa 1.Led Kapa \n";
control += "/led1ac 1.Led Aç \n";
control += "/led2kapa 2.Led Kapa \n";
control += "/led2ac 2.Led Aç \n";
control += "/led3kapa 3.Led Kapa \n";
control += "/led3ac 3.Led Aç \n";
control += "/Status Durum Gör \n";
bot.sendMessage(chat_id, control, "");
}
if (text == "/led1kapa") {
bot.sendMessage(chat_id, "Led 1 Kapandı", "");
Statusled1 = HIGH; //Burdaki satırlarda da parametrelerin hangi kodları tetikleyeceğini yazıyoruz.
digitalWrite(Pinled1, Statusled1);
}
if (text == "/led1ac") {
bot.sendMessage(chat_id, "LED 1 Açıldı", "");
Statusled1 = LOW;
digitalWrite(Pinled1, Statusled1);
}
if (text == "/led2kapa") {
bot.sendMessage(chat_id, "Led 2 Kapandı", "");
Statusled2 = HIGH;
digitalWrite(Pinled2, Statusled2);
}
if (text == "/led2ac") {
bot.sendMessage(chat_id, "LED 2 Açıldı", "");
Statusled2 = LOW;
digitalWrite(Pinled2, Statusled2);
}
if (text == "/led3kapa") {
bot.sendMessage(chat_id, "Led 3 Kapandı", "");
Statusled3 = HIGH;
digitalWrite(Pinled3, Statusled3);
}
if (text == "/led3ac") {
bot.sendMessage(chat_id, "LED 3 Açıldı", "");
Statusled3 = LOW;
digitalWrite(Pinled3, Statusled3);
}
if (text == "/Status") {
if (digitalRead(Pinled1)){
bot.sendMessage(chat_id, "LED 1 Kapalı", "");
}
else{
bot.sendMessage(chat_id, "LED 1 Açık", "");
}
if (digitalRead(Pinled2)){
bot.sendMessage(chat_id, "LED 2 Kapalı", "");
}
else{
bot.sendMessage(chat_id, "LED 2 Açık", "");
}
if (digitalRead(Pinled3)){
bot.sendMessage(chat_id, "LED 3 Kapalı", "");
}
else{
bot.sendMessage(chat_id, "LED 3 Açık", "");
}
}
}
}
void setup() {
Serial.begin(115200);
pinMode(Pinled1, OUTPUT);
[CODE]digitalWrite(Pinled1, Statusled1);
pinMode(Pinled2, OUTPUT);
digitalWrite(Pinled2, Statusled2);
pinMode(Pinled3, OUTPUT);
digitalWrite(Pinled3, Statusled3);
// Koneksi Ke Wifi
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
#ifdef ESP32
client.setCACert(TELEGRAM_CERTIFICATE_ROOT);
#endif
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi..");
}
// Print ESP32 Local IP Address
Serial.println(WiFi.localIP());
}
void loop() {
if (millis() > lastTimeBotRan + botRequestDelay) {
int numNewMessages = bot.getUpdates(bot.last_message_received + 1);
while(numNewMessages) {
Serial.println("got response");
handleNewMessages(numNewMessages);
numNewMessages = bot.getUpdates(bot.last_message_received + 1);
}
lastTimeBotRan = millis();
}
}
Kodlarımızı esp cihazımıza attıktan sonra botumuzun çalışma şekli bu şekildedir.
Projenizdeki cihazları daha senkron bir şekilde kontrol etmek için Raspberry Pi cihazınıza esp32 cihazlarınızı bağlayıp. raspberry pi ile cihazınızı wifi'ye bağlayabilirsiniz.
Bunun sayesinde wifi tek ip adresini raspberry pi verecek esp'lere tek tek ip adresini atamanıza gerek kalmayacaktır.
BİR SONRAKİ KONUDA TEKRARDAN GÖRÜŞMEK ÜZERE, İYİ FORUMLAR.
Son düzenleme:





