اتصال تلگرام به رزبری پای، استفاده از برد رزبری پای در پروژهها، همواره جذاب و راحت است. معماری قدرتمند ARM آن و نیز سیستم عامل منبع باز (open source) مبتنی بر لینوکس آن، به ما کمک کرده است که بسیاری از پروژههای خود را به صورت آنلاین و در کمترین زمان دریافت کنیم.
در این آموزش ما قصد داریم یک روش جالب را برای به اشتراک گذاشتن دادههای مختلف (فایل، عکس، ویدئو، متن و صوت) بین برد رزبریپای و گوشی موبایل معرفی کنیم که از طریق اپلیکیشن محبوب تلگرام انجام میشود.
استفاده از ربات تلگرام در رزبری پای: به اشتراک گذاشتن متن و فایل
در ابتدا لازم است برای کسانی که با تلگرام آشنایی ندارند توضیح دهیم که این اپلیکیشن یک اپلیکیشن پیام رسان مانند واتس آپ است که نسخههای مختلف آن برای اندروید و آیفون و ویندوز، در پلی استور قابل دسترسی است. بسیاری از کاربران بر این باور هستند که تلگرام سریعتر و کاربردی تر از واتس آپ است.
یکی از ویژگیهای تلگرام این است که از رباتها (bot) نیز پشتیبانی میکند. به این معنا که نه تنها قابل استفاده توسط افراد انسانی است، بلکه ماشینها نیز میتوانند از آن استفاده کنند. در پروژه ما، ماشین مورد نظر، برد رزبریپای خواهد بود. پس از آن که شما به برد رزبریپای خود میآموزید که چگونه مانند یک ربات رفتار کند، هر فردی (در صورتی که آن را برای عموم قابل استفاده کنید) خواهد توانست درست مانند زمانی که با یک انسان چت میکند، با برد شما نیز چت کند و دادهها مختلفی را با آن به اشتراک بگذارد. به این ترتیب میتوانید برای خودتان یک دستیار پاسخگویی ایجاد کنید! جالب است، نه؟ بیابید شروع کنیم …
ابزارهای مورد نیاز برای اتصال تلگرام به رزبری پای
- یکی از انواع مختلف بردهای رزبریپای که به اینترنت متصل باشد.
- موبایلی که اپلیکیشن تلگرام بر روی آن نصب شده باشد.
همانطور که میبینید به هیچ عنوان به ابزار پیچیده و فراوانی نیاز نداریم. بنابراین با آسودگی خاطر دستورات ساخت پروژه را دنبال کنید.
توجه کنید که در این جا ما فرض را بر این میگذاریم که برد رزبریپای شما به اینترنت متصل است و شما با نحوهی کار کردن با ترمینال Lx آشنا هستید. پس قبل از شروع دستورات این آموزش، ابتدا از متصل بودن برد خود به اینترنت مطمئن شوید. اگر در جایی از این آموزش مشکل داشتید به قسمت آموزش رزبری مراجعه کنید.
مرحله 1 – نصب تلگرام بر روی موبایل
قدم اول این است که اپلیکیشن تلگرام را بر روی موبایل خود نصب کنید ( البته اگر از قبل نصب نداشته باشید!)
تلگرام در ورژنهای مناسب اندروید، آیفون و دسکتاپ موجود است و شما میتوانید نسخهی متناسب خود را انتخاب و دانلود کنید. مانند همهی اپلیکیشنهای دیگر، در اینجا نیز پروسهی کوتاهی برای ثبتنام وجود دارد که باید آن را طی کنید. این پروسه را طی کنید تا زمانی که ثبتنام کامل شود و به صفحهی شخصی خود در تلگرام دسترسی پیدا کنید.
مرحله 2- گفتگو با Bot Father
قدم بعدی این است که به کمک بات مرجع تلگرام، درخواست ایجاد یک بات جدید شخصی بدهیم.
در گوشهی بالای سمت راست صفحهی اصلی تلگرام شما، یک آیکون جستجو وجود دارد. از طریق آن کلمه BotFather را جستجو کنید. این ربات به ما کمک میکند که بتوانیم ربات مخصوص به خودمان را ایجاد کنیم.
دکمه start را بزنید و بر روی گزینه /newbot همانطور که در تصویر زیر هم مشخص شده است، کلیک کنید. پس از آن، از شما درخواست میشود که اطلاعات مختصری نظیر نامی که میخواهید برای بات خود انتخاب کنید و username آن را وارد کنید. این اطلاعات را وارد کنید و دقت داشته باشید که ما بعدا با این یوزرنیم انتخابی سر وکار خواهیم داشت.
مرحله 3 – دریافت توکن دسترسی
ما در این جا اسم رباتمان را circuitdigest گذاشتهایم و یوزرنیم آن را نیز circuitdigestBot انتخاب کردهایم. پس از طی این مراحل، Bot Father به ما یک توکن دسترسی میدهد که چیزی شبیه پسورد برای استفاده از ربات مان است و هر فردی که به آن دسترسی داشته باشد بوسیلهی آن میتواند ربات را برنامهریزی و مدیریت کند. بنابراین در حفظ این کد دقت کنید!
پس از گرفتن توکن دسترسی، به سراغ رزبریپای میرویم.
مرحله 4- استفاده از Telepot برای نصب تلگرام بر روی رزبریپای
استفاده از تلگرام بر روی برد رزبریپای با کمک بستهی پایتونی به نام Telepot امکان پذیر شده است. بنابراین باید این بستهرا از طریق اعمال دستورات زیر بر ترمینال Lx، بر روی رزبریپای نصب کنیم.
زمانی که تلهپات بر روی برد نصب شد، میتوانیم آن را از طریق برنامه پایتون اجرا کرده و با ربات تلگرم ارتباط برقرار کنیم.
مرحله 5 – برنامه نویسی برد رزبریپای
رباتی که در تلگرام ایجاد کردیم، درست مانند یک بچه است! تا زمانی که ما به او نگوییم که چه کاری و چگونه انجام دهد، خودش چیزی نمیداند. پس ما باید به او یاد بدهیم که چه کاری از او میخواهیم. این آموزش را از طریق نوشتن برنامه در پایتون و رزبریپای انجام میدهیم.
در اینجا ما ربات خودمان را به این صورت برنامه ریزی میکنیم که تعدادی عمل ساده مانند ارسال پیام، عکس، صوت و .. را انجام دهد. بنابراین زمانی که به ربات دستور مشخصی داده میشود، قادر خواهد بود که پاسخ مشخصی بدهد. این دستورات و پاسخها را در جدول زیر لیست کردهایم.
کد کامل برای به اجرا درآمدن دستورات و پاسخهای فوق را، در انتهای این آموزش قرار دادهایم. اما در ادامه قطعات کوچک و مهمی از برنامه را که فهم آنها به فهم نحوهی عملکرد کل برنامه کمک میکند، توضیح میدهیم.
قدم اول در کد، فراخوانی تمام توابع مورد نیاز است. یکی از توابعی که قطعا به آن نیاز داریم، همان Telepot است. همچنین به توابع زمانی نیز نیاز داریم تا رزبریپای بتواند زمان جاری را بخواند. پس از آن باید یک پروژه ایجاد کنیم که مقادیر و دستورات در آن ذخیره شوند.
قدم بعدی این است که تابعی داشته باشیم که بتواند مبتنی بر دستورات دریافتی از کاربر، عمل متناسب را انجام دهد. در اینجا نام این تابع را action گذاشتهایم. ربات تلگرام در اصل در درون این تابع برنامه ریزی میشود. باید توجه داشته باشیم ربات تلگرامی ما خودش قادر نیست که ابتدائا مکالمهای را آغاز کند، بلکه فقط میتواند به دستورات پاسخ دهد. بنابراین هر زمان که دستوری وجود داشته باشد، chat id بوجود میآید. Chat id در واقع چیزی شبیه به یک آدرس است که تنها در صورت وجود آن ربات میتواند به دستور کاربرد پاسخ دهد. پس ابتدا باید chat id و پیامی که کاربر ارسال کرده است خوانده شوند. همچنین دستور دریافتی را نیز چاپ میکنیم تا در مراحل بعدی که دستور پروسس میشود، آن را در دسترس داشته باشیم.
در ادامهی تابع و به منظور بررسی و پروسس هر دستور، آن را با یک نوشتهی از پیش معلوم شده مقایسه میکنیم تا در صورت یکی بودن، اقدامات مشخص تعیین شده انجام شوند.
دستور اول در اینجا /hi است که از قبل گفتیم که میخواهیم با “Hi! CircuitDigest” پاسخ داده شود.
دستور بعدی /time است که میخواهیم در پاسخ به آن کاربر زمان جاری را دریافت کند. برد رزبریپای قابلیت خواندن زمان و تاریخ را در خود دارد. کافیست در اینجا آن مقادیر خوانده شده را به صورت زیر به ثانیه و دقیقه و ساعت تقسیم کنیم.
دستور بعدی /logo است که در پاسخ به آن ربات باید تصویری را از url مشخصی که به آن میدهیم دریافت کند و برای کاربر ارسال کند. البته تصویر میتواند از طریق url یا از طریق هارد دیسک قابل دسترس باشد. ما در اینجا از نوع url استفاده کردهایم.
دستور بعد ، دستور /file است . در پاسخ به آن ربات فایلی به نام Aisha.py را که بر روی هارد دیسک قرار دارد، ارسال میکند. شما نیز میتوانید هر فایل دلخواهی را که دوست دارید ربات در پاسخ به این دستور ارسال کند، به جای این فایل، با آدرس مشخص خودتان قرار دهید.
دستور بعد، دستور /audio است. ربات با گرفت این دستور مثلا یک فایل mp3 را از هارد دیسک برداشته و ارسال میکند. ما در اینجا فایلی به نام test.mp3 را به عنوان نمونه قرار دادهایم.
و حالا نوبت به مهمترین بخش میرسد. جایی که میخواهیم برای دستورات پایتون دسترسی لازم به ربات تلگرامی را فراهم کنیم. در اینجا بات تلگرام را با نام telegram_bot فراخوانی میکنیم و توکن دسترسی ای را که در مرحله سه دریافت کردیم، به آن میدهیم. در کد زیر همانطور که میبینید ما چند رقم آخر توکن خود را به منظور امنیت ربات، پنهان کردهایم. همچنین از دستور print نیز به منظور نمایش اتفاقات ربات بر روی صفحه نمایش، استفاده میکنیم.
امیدواریم که با این توضیحات به خوبی متوجه نحوهی عملکرد برنامه شده باشید. حال به ادامه مراحل میپردازیم.
مرحله 6- اجرای برنامهی نوشته شده در رزبریپای
همانطور که گفتیم، کد کامل این برنامه در انتهای آموزش قرار داده شده است که میتوانید دانلود کنید. در صورتی که از این کد آماده استفاده کردید، دقت کنید که در قسمت توکن دسترسی، توکن مربوط به خودتان را جایگزین کنید.
حال برنامه را در پایتون اجرا کنید و در نتیجه آن باید مشخصات ربات خود را مشابه تصویر زیر روی صفحه ببینید. میبینید که در تصویر نشان داده شده، نام ربات ما به درستی circuitdigestBot نشان داده شده است. پس شما نیز اگر نام ربات خود را مشاهده کردید، همه چیز تا این مرحله درست پیش رفته.
زمانی که پیغام up and running را دیدید، به این معناست که ربات شما آماده دریافت دستورات و پاسخگویی است.
مرحله 7- از خروجی لذت ببرید!
حالا فقط این مانده است که چک کنید که آیا بات شما به تمامی دستورات به خوبی پاسخ میدهد یا خیر. نام ربات خود را در قسمت جستجوی تلگرام، جستجو کنید. پس از پیدا کردن، بات خود را باز کنید و start را وارد کنید. سپس دستورات /hi, /time, /file, /logo, or /audio را به ترتیب وارد کنید و پاسخهای برنامه ریزی شده را دریافت نمایید.
(نکته مهم : توجه کنید که در موارد /logo، /audio و /file ، اگر چنانچه شما url و آدرس مطابق با هارددیسک برد خودتان را در کد وارد نکرده باشید، به مشکل برخواهید خورد. پس حتما در مورد جایگزینی این موارد در کد دقت داشته باشید.)
فیلم کامل نحوهی عملکرد را میتوانید در انتهای آموزش دریافت کنید.
امیدواریم که به خوبی این آموزش را یادگرفته باشید و بتوانید برد رزبری پای و ربات تلگرام خودتان را داشته باشید و به وسیله این آموزش میان آنها ارتباط برقرار میکنید. در صورتی که سوالی در این زمینه داشتید در قسمت کامنتها وارد کنید. همچنین در مورد آموزشهای دیگری که مایل هستید در این رابطه دریافت کنید، با ما در ارتباط باشید.
در آموزشهای بعدی، روشهای جالبتری نیز در مورد روش های ارتباطی به اشتراک گذاشتن دادهها، ارائه خواهیم داد. با ماهمراه باشید.
کد کامل ربات:
import time, datetime import telepot from telepot.loop import MessageLoop now = datetime.datetime.now() def action(msg): chat_id = msg['chat']['id'] command = msg['text'] print 'Received: %s' % command if command == '/hi': telegram_bot.sendMessage (chat_id, str("Hi! CircuitDigest")) elif command == '/time': telegram_bot.sendMessage(chat_id, str(now.hour)+str(":")+str(now.minute)) elif command == '/logo': telegram_bot.sendPhoto (chat_id, photo = "https://i.pinimg.com/avatars/circuitdigest_1464122100_280.jpg") elif command == '/file': telegram_bot.sendDocument(chat_id, document=open('/home/pi/Aisha.py')) elif command == '/audio': telegram_bot.sendAudio(chat_id, audio=open('/home/pi/test.mp3')) telegram_bot = telepot.Bot('468382312:AAFhURMxpVlMWEdFzbIQLszBPFEUpAeOLFQ') print (telegram_bot.getMe()) MessageLoop(telegram_bot, action).run_as_thread() print 'Up and Running....' while 1: time.sleep(10)
ویدئو :
منابع: