esp8266آردوینو - آموزش آردوینو-Arduinoتازه هاماژول های مخابراتی

اتصال ESP8266 به ربات تلگرام (ایجاد ربات تلگرام)

سلام پروژه اتصال یک وسیله الکترونیکی به اینترنت و کنترل آن از طریق اینترنت همیشه برای من جذابیت داشته و دارد این اتصال با وجود تلگرام و امکانات بی نظیرش و ماژول ESP8266 به ساده ترین روش امکان پذیر است. قسمت اول پست اتصال ESP8266 به ربات تلگرام نحوه ایجاد این ربات تلگرام و اطلاعات کلی در مورد نحوه کارکرد آن در وب سایت الکترولب ارائه خواهیم کرد. ادامه مطلب را از سایت سیسوگ نقل میکنم.

ربات تلگرام چیست؟

در واقع ربات تلگرام یک حساب کاربری ویژه است که شما قادر به چت با آن هستید و می‌توانید با استفاده از دستورات خاص از پیش تعریف‌شده، با آن‌ها تعامل داشته باشید. ربات‌ها برنامه‌های کامپیوتری هستند که با استفاده از الگوریتم‌های طراحی‌شده، جواب درخواست‌های شما را می‌دهد. باور اشتباهی در خصوص هک شدن توسط بات تلگرام وجود دارد که اشتباه است. ربات‌ها قادر به هک هیچ حسابی نیستند مگر آن‌که شما اطلاعات لازم را در اختیار آن‌ها قرار دهید.

برخی از ویژگی‌ها و محدودیت‌های ربات تلگرام:

  • ربات‌ها معمولاً فضای محدودی برای ذخیره‌سازی پیام‌های شما دارند و معمولاً پیام‌های پردازش‌شده پاک می‌شوند.
  • ربات‌ها نمی‌توانند شروع‌کننده‌ی مکالمه باشند و باید حتماً از سمت شما درخواستی برای پردازش به آن‌ها ارسال شده باشد.
  • در انتهای نام کاربری هر ربات باید کلمه bot وجود داشته باشد که مشخص‌کننده‌ی ربات بودن آن حساب کاربری است.
  • ربات‌های تلگرام هرگز خسته و غیرفعال نمی‌شود ولی شما به‌راحتی می‌توانید آن‌ها را برای خود غیرفعال کنید.
  • ربات‌ها با اضافه شدن به گروه‌ها و کانال‌ها قادر به خواندن پیام‌ها نیستند مگر آن‌که تنظیمات آن را تغییر داده باشید.
  • ربات‌ها تعداد محدودی پیام در روز می‌توانند ارسال کنند.
  • ربات‌ها زمان آخرین بازدید را ندارند و به جای آن Bot نمایش داده می‌شود.

ربات تلگرام چه کارهایی را می‌تواند انجام دهد؟

وقتی می‌پرسیم که با آردوینو چه کارهایی می‌توان انجام داد، باید بگوییم که هیچ محدودیتی وجود ندارد؛ تنها محدودیتِ موجود میزان خلاقیت شماست. ربات تلگرام نیز هیچ محدودیتی در پیاده‌سازی ایده‌ها و کاربردها ندارد و هر آنچه که برای آن پیاده‌سازی شده باشد را قادر است انجام دهد.

چگونه یک ربات تلگرام بسازم؟

خوشبختانه ساخت ربات تلگرام کار پیچیده ای نیست. تنها کافی است که یک حساب تلگرام داشته باشید و سر صحبت را با ربات پدرخوانده (botfather) باز کنید و به او بگویید که می‌خواهید یک ربات بسازید. بقیه‌ی کارها را خودش انجام می‌دهد. برای باز کردن سر صحبت با ربات پدرخوانده ابتدا دستور زیر را به آن بفرستید:

بعد از ارسال دستور start، ربات پدرخوانده لیستی از دستورات قابل‌اجرا را برای شما ارسال می‌کند.

همان‌طور که در عکس فوق هم مشخص است برای ساخت یک ربات جدید باید دستور زیر را به ربات پدرخوانده بفرستیم:

ربات پدر‌خوانده با دریافت دستور newbot از شما نام کاربری ربات موردنظر را سؤال می‌کند. دقت داشته باشید نام کاربری با نام ربات فرق دارد و نام کاربری ربات شما حتماً در انتها باید دارای bot باشد. اگر نام کاربری را بدون bot در انتها وارد کنید، ربات پدرخوانده پیام زیر را نمایش می‌دهد:

بعد از وارد کردن صحیح نام کاربری درصورتی‌که مشکلی وجود نداشته باشد ربات موردنظر توسط ربات پدرخوانده ایجاد می‌شود و یک کلید دسترسی به شما داده می‌شود. با استفاده از این کلید می‌توانید ربات خود را مدیریت کنید؛ پس دقت داشته باشید که این کلید دسترسی را ذخیره کنید و در اختیار همه قرار ندهید چرا‌ که هر‌ کسی که این کلید را داشته باشد قادر به کنترل ربات خواهد بود.

در این مرحله فقط کلید ارسال‌شده را ذخیره کنید در ادامه توضیح خواهیم داد که چطور می‌توان با استفاده از آن به ربات متصل شد.

ربات تلگرام چطور کار می کند؟

قبل از این‌که توضیح بدهیم که چطور می‌توانیم ربات موردنظرمان را به آردوینو یا هر سخت‌افزار دیگری وصل کنیم، بهتر است در خصوص اتفاقاتی که درون هسته‌ی یک ربات می‌افتند صحبت کنیم.

وقتی‌که شخصی به ربات شما پیام ارسال می‌کند، پیام کاربر درون سرور تلگرام ذخیره می‌شود و تلگرام بسته به متد مورد‌استفاده‌ی شما (Web Hook یا Long Polling) برای برقراری ارتباط با سرور تلگرام، پیام کاربر را در قالب خاصی برای شما ارسال می‌کند و شما بعد از پردازش داده‌های ارسالی، پاسخ خود را در قالب مشخصی برای سرور تلگرام ارسال می‌کنید و تلگرام داده‌های دریافتی را برای کاربر ارسال می‌کند.

سرورهای تلگرام به‌عنوان واسط بین کاربر و هسته‌ی پردازشی ربات قرار می‌گیرند. این باعث می‌شود که هسته‌ی پردازشی، آدرس آی پی کاربر را نداشته باشد و امنیت ارتباط بالا برود.

دو روش برای برقرار ارتباط با سرورهای تلگرام وجود دارد: روش اول که توسط خود تلگرام نیز توصیه می‌شود روش Web Hook است. در این روش هر وقت ربات شما پیام جدیدی داشته باشد خود سرور تلگرام پیام را برای شما ارسال می‌کند. در این روش داشتن آدرس آی پی اختصاصی و مجوز SSL الزامی است. تهیه‌ی این دو پارامتر هزینه‌بر است و نمی‌توان از آن در همه‌ی کاربردها استفاده کرد. ما قرار است در این آموزش برد آردوینو را به ربات تلگرام متصل کنیم. قاعدتاً تهیه آی پی استاتیک برای برد آردوینو کار دشواری است. از طرفی پیاده‌سازی پروتکل SSL خود به‌تنهایی کاری بسیار پیچیده است.

در این آموزش ما از متد Long Polling استفاده می‌کنیم. در متد Long Polling سرور تلگرام چیزی به ما نمی‌دهد بلکه ما باید مدام از سرور استعلام کنیم و ببینیم آیا پیام جدیدی برای پردازش وجود دارد یا خیر! در صورت وجود پیام جدید آن را پردازش می‌کنیم و به سرور ارسال می‌کنیم. در این روش نیازی به داشتن آی پی استاتیک یا مجوز SSL نیست و به‌راحتی می توان با سرور ارتباط برقرار کرد.

چگونه به سرور وصل شویم؟

همان‌طور که گفتیم برای اتصال به سرورهای تلگرام ما از روش Long Polling استفاده خواهیم کرد. در این روش اول لازم است که یک آدرس ایجاد کنیم و بعد با مراجعه به آدرس، عملیات موردنظر خود را انجام دهیم.

برای کنترل ربات تلگرام باید از متدهای معرفی‌شده توسط تلگرام استفاده کنیم. هر یک از این متدها ورودی و خروجی‌های خاص خود را دارند. برای ارسال پارامترهای موردنیازِ هر متد می‌توان از روش POST یا GET استفاده کرد.

جهت سادگی بیشتر ما از متد GET برای ارسال پارامترها استفاده خواهیم کرد. در این روش پارامترهای موردنظر در URL قرار می گیرند.

https://sisoog.com/?p=26112

در مثال فوق با استفاده از متد GET، متغیر p مقدار 26112 را دریافت کرده و به سرور سیسوگ ارسال شده است.

برای این‌که بتوانیم به سرور تلگرام بگوییم که قصد چه کاری را داریم و قرار است در مورد کدام ربات صحبت کنیم نیاز است که URL منحصربه‌فردی بسازیم که دربردارنده‌ی این اطلاعات باشد. برای ساخت این URL باید مثل الگوی زیر رفتار کنیم:

https://api.telegram.org/bot<token>/METHOD_NAME

<token> همان کلیدی است که ربات پدرخوانده بعد از ایجاد ربات برای ما ارسال کرده است. دقت داشته باشید که نباید هیچ فاصله‌ای وجود نداشته باشد و تمام فاصله‌ها حذف شوند.

METHOD_NAME هم در واقع متدی است که قصد فراخوانی آن را داریم. لیست متدهای مجاز را می توانید در وب‌سایت تلگرام مشاهده کنید. درصورتی‌که متد موردنظر دارای پارامتر باشد، پارامتر های آن را در انتها وارد می کنیم.

فرض کنید می‌خواهیم متد getMe را برای رباتی که ساختیم فراخوانی کنیم.

با توجه به توضیحات ارائه‌شده در سایت تلگرام این متد هیچ پارامتر ورودی ندارد و در خروجی، داده‌ها را در قالب شیء User برمی‌گرداند.

همان‌طور که می‌بینید شیء User دارای مشخصات اولیه اعم از اسم، یوزر و زبان ربات است.

با توجه به توضیحات ارائه‌شده، ابتدا URL موردنظر خود را می سازیم، بعد آن را درون مرورگر وارد میکنم و سرور تلگرام خروجی را برای ما ارسال خواهد کرد:

https://api.telegram.org/bot427594526:AAGyn4uPF3R4woujYL-N1TQpDEslXXXXX/getme

بعد از فراخوانی آدرس فوق در مرورگر، سرور تلگرام اطلاعات مربوط به ربات را برای ما ارسال می‌کند:

در مقاله‌ی بعد با استفاده از نرم‌افزار آردوینو و ماژول ESP8622 برنامه‌ای خواهیم نوشت که بتوانیم از طریق ربات تلگرام وضعیت چند خروجی را تغییر دهیم.

در وبلاگ رزبری پای در مورد اینرنت اشیا در دو پست مطالبی داشتیم:

اینرنت اشیا با رزبری پای و ESP8266 قسمت اول (بررسی MQTT)

اینرنت اشیا با رزبری پای و ESP8266 (قسمت دوم)

می توانید مطالب مربوط به رزبری پای و اورنج پای و سایر کامپیوتر های تک بردی را در وبلاگ رزبری پای دنبال کنید.

علی عزتی

علی عزتی هستم. رشته ی مهندسی برق الکترونیک رو خوندم. علاقه ی من به یادگیری و به اشتراک گذاشتن چیز هایی که یاد گرفتم. باعث شد تا الکترولب ایجاد بشه. علاقه ی زیادی به الکترونیک دارم. و دوست دارم چیزهای جدید یادبگیرم و بسازم ... :))

Related Articles

4 Comments

  1. ساخت رباط کاری نداره ولی چه کاربردی داره
    مثلا اگه بخواهیم یه کانال بسازیم چطوری میتونیم به کاربران وصلش کنیم تا جوابهاشونو بده
    در ضمن چطوری میشه این رباط لاگ هارو نگه داره
    و از این قبیل کارها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.