- টেলিগ্রাম এপিআই-এর সাথে HTTPS যোগাযোগ সহজ করার জন্য UniversalTelegramBot লাইব্রেরির সংযোজন।
- এলইডি-র মতো অ্যাকচুয়েটর পরিচালনা করতে এবং সুইচের অবস্থা পড়তে GPIO পিনগুলোর রিমোট কন্ট্রোল।
- চ্যাট আইডি যাচাইকরণ এবং এসএসএল সার্টিফিকেট ব্যবহারের মাধ্যমে নিরাপত্তা বাস্তবায়ন।

আপনি কি কখনো ভেবে দেখেছেন যে, সোফায় আরাম করে বসে মোবাইল ফোন দিয়ে আপনার হোম অটোমেশন ডিভাইসগুলো নিয়ন্ত্রণ করবেন? তাহলে শুনুন, ব্যয়বহুল এক্সটার্নাল সার্ভার বা অসম্ভব কনফিগারেশনের ঝামেলা ছাড়াই হোম অটোমেশনের জগতে প্রবেশ করার জন্য টেলিগ্রামের মাধ্যমে একটি ESP32 নিয়ন্ত্রণের সিস্টেম তৈরি করা অন্যতম সহজ ও শক্তিশালী একটি উপায়।
এর আসল জাদুটা হলো আপনার বোর্ডটিকে একটি ছোট সার্ভারে পরিণত করা, যা একটি বটের নির্দেশ শোনে। আপনাকে প্রোগ্রামিংয়ে খুব দক্ষ হতে হবে না, কারণ কয়েকটি লাইব্রেরি এবং সামান্য ধৈর্য থাকলেই আপনি আপনার ডিভাইসটি দিয়ে রিয়েল-টাইমে আলো জ্বালানো বা কোনো সেন্সরের অবস্থা সম্পর্কে সতর্কবার্তা পেতে পারেন—আর এই সবকিছুই হবে তাৎক্ষণিক টেক্সট মেসেজের মাধ্যমে।
আপনার প্রয়োজন হবে উপাদান
শুরু করার জন্য আপনাকে প্রচুর টাকা খরচ করতে হবে না। সবচেয়ে গুরুত্বপূর্ণ বিষয় হলো একটি ESP32 বোর্ড থাকা ; এটি পুরোনো মডেল হোক বা একেবারে নতুন, তাতে কিছু যায় আসে না, কারণ এর সামঞ্জস্যতা সম্পূর্ণ। প্রজেক্টের মূল অংশ ছাড়াও, পরীক্ষার জন্য আপনার কিছু সাধারণ যন্ত্রাংশ লাগবে:
- সবকিছু ঠিকঠাক কাজ করছে কিনা তা পরীক্ষা করার জন্য একটি লাইট-এমিটিং ডায়োড (এলইডি)।
- এলইডি পুড়ে যাওয়া এড়ানোর জন্য একটি ২২০ ওহম রোধক।
- ভৌত অবস্থা জানার জন্য একটি পুশ বাটন বা সুইচ।
- সংযোগকারী তার এবং একটি ব্রেডবোর্ড, যাতে শুরুতে আপনাকে কোনো কিছু সোল্ডার করতে না হয়।
ইলেকট্রনিক সার্কিট অ্যাসেম্বলি
কোড সম্পাদনা করার আগে, আপনাকে হার্ডওয়্যার প্রস্তুত করতে হবে। এই উদাহরণের জন্য, আমরা LED-কে GPIO পিন ৩৩-এর সাথে এবং সুইচটিকে GPIO ১৪-এর সাথে সংযুক্ত করব । এটা মনে রাখা অত্যন্ত জরুরি যে, আপনি প্রয়োজন অনুযায়ী এই পিনগুলো পরিবর্তন করতে পারেন, কিন্তু পরবর্তীতে প্রোগ্রামের কনস্ট্যান্টগুলোতে সেই পরিবর্তনটি প্রতিফলিত করতে হবে।
সুরক্ষার জন্য এলইডি-টি তার সংশ্লিষ্ট রেজিস্টরের সাথে সংযুক্ত থাকে, অন্যদিকে পুশ বাটনটি অতিরিক্ত ওয়্যারিং এড়ানোর জন্য অভ্যন্তরীণভাবে কনফিগার করা থাকে। একবার ব্রেডবোর্ডে সার্কিটটি তৈরি হয়ে গেলে , আপনি সফটওয়্যার অংশে যেতে পারেন, যেখানে সমস্ত কাজ সম্পন্ন হয়।
টেলিগ্রামে বট সেটআপ
ESP32 যাতে জানতে পারে কার কথা শুনতে হবে, তার জন্য আমাদের প্রথমে টেলিগ্রাম অ্যাপ্লিকেশনের মধ্যেই বটটির পরিচয় তৈরি করতে হবে। এই প্রক্রিয়াটি অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি দুটি মূল তথ্য সরবরাহ করে: বটটির টোকেন (সংখ্যা এবং অক্ষরের একটি দীর্ঘ স্ট্রিং) এবং আপনার ব্যক্তিগত ইউজার আইডি । এই দুটি চাবি ছাড়া, ডিভাইসটি নিজেকে প্রমাণ করতে পারে না বা কে এটিকে নির্দেশ দেওয়ার জন্য অনুমোদিত তা নির্ধারণ করতে পারে না।
যদি কোনো সময়ে আপনার মনে হয় চ্যাটটি বিশৃঙ্খল হয়ে পড়েছে, তাহলে মনে রাখবেন যে আপনি উপরের ডানদিকের মেনু থেকে হিস্ট্রি মুছে ফেলতে পারেন । এটি করলে বটটি রিস্টার্ট হবে এবং উপলব্ধ কমান্ডগুলোসহ হোম বাটনে ফিরে আসবে, যা আপনাকে নতুন করে শুরু করার সুযোগ দেবে।
উন্নয়ন পরিবেশের প্রস্তুতি
কোডটি কাজ করানোর জন্য, আমাদের এমন একটি টুল ইনস্টল করতে হবে যা আমাদের কাজকে সহজ করে তোলে: ইউনিভার্সাল টেলিগ্রাম বট (UniversalTelegramBot) লাইব্রেরি । টেলিগ্রাম এপিআই (Telegram API) পরিচালনার জন্য শত শত লাইন কোড লেখার পরিবর্তে, এই লাইব্রেরিটি আমাদের জন্য প্রায় সবকিছুই করে দেয়।
এটি ইনস্টল করতে, কেবল Arduino IDE-এর লাইব্রেরি ম্যানেজারে যান, লাইব্রেরির নামটি টাইপ করুন এবং ইনস্টল-এ ক্লিক করুন। এছাড়াও, নিশ্চিত করুন যে আপনার WiFi এবং WiFiClientSecure লাইব্রেরিগুলো ইনস্টল করা আছে , কারণ এগুলোই ESP32-কে ইন্টারনেটের সাথে সংযোগ স্থাপন করতে এবং নিরাপদ যোগাযোগের জন্য HTTPS প্রোটোকল ব্যবহার করতে সাহায্য করে।
নিয়ন্ত্রণ কোড বিশ্লেষণ
প্রোগ্রামটি আপনার ওয়াইফাই নেটওয়ার্কের ক্রেডেনশিয়াল এবং বটের কীগুলো নির্ধারণ করার মাধ্যমে শুরু হয়। উদাহরণস্বরূপ দেওয়া মানগুলো আপনার নিজের মান দিয়ে প্রতিস্থাপন করা অত্যন্ত জরুরি। এসএসআইডি এবং পাসওয়ার্ডসেইসাথে টোকেন এবং চ্যাট আইডি। ইন্টারঅ্যাক্টিভিটির জন্য, আমরা একটি ভেরিয়েবল সংজ্ঞায়িত করি যার নাম info যেটিতে সেইসব কমান্ডের তালিকা রয়েছে যা বটটি চিনতে পারবে, যেমন /led_on বা /sw_state।
বার্তা এবং কমান্ড ব্যবস্থাপনা
সিস্টেমটির মূল অংশ হলো নতুন বার্তা পরীক্ষা করার ফাংশনটি। ESP32 এই পদ্ধতিটি ব্যবহার করে getUpdates জন্য মেসেজ কিউ চেক করুন টেলিগ্রাম থেকে। কোনো অপরিচিত ব্যক্তি যাতে আপনার বাড়ি নিয়ন্ত্রণ করতে না পারে, সেজন্য কোডটিতে একটি ফিল্টার অন্তর্ভুক্ত রয়েছে যা প্রেরকের আইডি আপনার আইডির সাথে হুবহু মেলে কিনা তা যাচাই করে। পূর্বনির্ধারিত চ্যাট_আইডি.
ব্যবহারকারী যাচাই হয়ে গেলে, বটটি প্রাপ্ত টেক্সট বিশ্লেষণ করে: যদি এটি শনাক্ত করে /led_onএটি আলো জ্বালানোর জন্য পিন ৩৩-এ একটি ডিজিটাল সংকেত পাঠায়; যদি এটি সংকেতটি গ্রহণ করে /led_offএটি বন্ধ করে দেয়। আরও একটি বিকল্প আছে /led_toggleযা খুবই বাস্তবসম্মত কারণ বর্তমান অবস্থা উল্টে দেয় এলইডি-টি আগে চালু ছিল নাকি বন্ধ ছিল, তা আপনার না জেনেই নিয়ন্ত্রণ করা যায়।
সেন্সর পাঠ এবং সমাপ্তি
কমান্ড দেওয়ার পাশাপাশি, বটটি তথ্যও সরবরাহ করতে পারে। কমান্ড ব্যবহার করে /sw_stateESP32 পিন 14-এর অবস্থা পড়ে। যেহেতু আমরা পিনটিকে এভাবে কনফিগার করেছি ইনপুট_টানআপডিভাইসটি বাটনটি চাপা হয়েছে কি না তা শনাক্ত করবে এবং বিষয়টি নিশ্চিত করে আমাদের একটি টেক্সট বার্তা পাঠাবে।
বুট প্রক্রিয়ার সময়, ডিভাইসটি একটি লকড অবস্থায় ওয়াই-ফাই এর সাথে সংযুক্ত হয়, যার অর্থ হলো সংযোগ স্থিতিশীল না হওয়া পর্যন্ত এটি কোনো কাজ করবে না । নিরাপত্তা আরও বাড়ানোর জন্য, টেলিগ্রামের রুট সার্টিফিকেট ব্যবহার করা হয়, যা ডেটা ট্র্যাফিক এনক্রিপ্টেড থাকা নিশ্চিত করে। সিস্টেমটিকে সচল ও প্রতিক্রিয়াশীল রাখতে মূল লুপটি প্রতি সেকেন্ডে মেসেজ চেকের পুনরাবৃত্তি করে।
এই সিস্টেমের মাধ্যমে আমরা সফলভাবে হার্ডওয়্যার ও সফটওয়্যার সমন্বয় করে একটি ওয়্যারলেস কমিউনিকেশন ব্রিজ তৈরি করেছি। আমরা একটি বট কনফিগার করেছি, আইডি ও সার্টিফিকেট ব্যবহার করে নিরাপত্তা পরিচালনা করেছি এবং ইন্টারনেট সংযোগের মাধ্যমে যেকোনো স্থান থেকে বাস্তব জগতের সাথে যোগাযোগের জন্য GPIO পিনের প্রতিক্রিয়া প্রোগ্রাম করেছি।
প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী
ESP32-কে টেলিগ্রামের সাথে সংযোগ করতে কোন লাইব্রেরি প্রয়োজন?
UniversalTelegramBot লাইব্রেরিটি ব্যবহার করা উচিত, যা টেলিগ্রাম এপিআই-এর সাথে ইন্টারঅ্যাকশন সহজ করে এবং মেসেজ পাঠানো ও গ্রহণকে সুবিধাজনক করে তোলে।
আমি কীভাবে নিশ্চিত করব যে শুধুমাত্র আমিই বটটি নিয়ন্ত্রণ করতে পারব?
কোডটিতে এমন একটি ফিল্টার প্রয়োগ করা হয়েছে যা প্রাপ্ত বার্তার চ্যাট আইডিকে একটি পূর্বনির্ধারিত CHAT_ID-এর সাথে তুলনা করে এবং অন্য ব্যবহারকারীর কাছ থেকে আসা যেকোনো কমান্ড উপেক্ষা করে।
বটের সাথে যোগাযোগের জন্য HTTPS ব্যবহার করা কি আবশ্যক?
হ্যাঁ, টেলিগ্রামের জন্য সুরক্ষিত সংযোগ প্রয়োজন, তাই WiFiClientSecure ব্যবহার করা হয় এবং ESP32-এ টেলিগ্রাম রুট সার্টিফিকেটটি কনফিগার করা আবশ্যক।
কোডে /led_toggle কমান্ডটির উদ্দেশ্য কী?
এই কমান্ডটি এলইডি-র বর্তমান অবস্থা পরিবর্তন করতে ব্যবহৃত হয়; অর্থাৎ, এলইডি বন্ধ থাকলে তা চালু করে অথবা চালু থাকলে তা বন্ধ করে দেয়।
সুইচের জন্য INPUT_PULLUP কেন ব্যবহার করা হয়?
এটি বোর্ডের অভ্যন্তরীণ রোধকে সক্রিয় করতে ব্যবহৃত হয়, ফলে পুশ বাটন সার্কিটে কোনো বাহ্যিক ভৌত রোধ যোগ করার প্রয়োজন হয় না।
আমি বট টোকেন এবং ইউজার আইডি কোথায় পাব?
টেলিগ্রামে বটফাদার (BotFather)-এর মাধ্যমে বট তৈরি করে টোকেনটি পাওয়া যায় এবং প্রোফাইল পরিচয় সংগ্রহে বিশেষায়িত বটগুলোর সাহায্যে ইউজার আইডি সংগ্রহ করা যায়।



